ios - pantalla - escala de grises iphone
Barra de navegación, tinte y color del texto del tÃtulo en iOS 8 (12)
// En Swift 4
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
El texto de fondo en la barra de estado sigue siendo negro. ¿Cómo cambio el color a blanco?
// io8, swift, Xcode 6.0.1
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.barTintColor = UIColor.blackColor()
self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orangeColor()]
}
Actualizado con swift 4
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.tintColor = UIColor.blue
self.navigationController?.navigationBar.barStyle = UIBarStyle.black
}
En AppDelegate.swift
, en la application(_:didFinishLaunchingWithOptions:)
puse lo siguiente:
UINavigationBar.appearance().barTintColor = UIColor(red: 234.0/255.0, green: 46.0/255.0, blue: 73.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white]
Para titleTextAttributes
, los docs dicen:
Puede especificar la fuente, el color del texto, el color de sombra del texto y el sombreado de texto para el título en el diccionario de atributos de texto
En Swift 3 esto funciona:
navigationController?.navigationBar.barTintColor = UIColor.white
navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.blue]
Me gusta la respuesta de Alex. Si quieres algo rápido para probar en un ViewController
asegúrate de usar
viewWillAppear()
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
var nav = self.navigationController?.navigationBar
nav?.barStyle = UIBarStyle.Black
nav?.tintColor = UIColor.white
nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]
}
Para cambiar el color universalmente, este código debe estar en la función viewDidLoad
NavigationController
:
class NavigationController: UINavigationController, UIViewControllerTransitioningDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Status bar white font
self.navigationBar.barStyle = UIBarStyle.Black
self.navigationBar.tintColor = UIColor.whiteColor()
}
}
Para cambiarlo por ViewController
, debería hacer referencia al NavigationController
desde ViewController
y escribir líneas similares en la función viewWillAppear
ViewController
.
Para color personalizado a TitleText
en NavigationBar
, aquí un código simple y corto para Swift 3:
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]
o
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName :UIColor.white]
Para trabajar en viewWillAppear
-C tengo que poner las siguientes líneas en viewWillAppear
en mi CustomViewController.
[self.navigationController.navigationBar setBarTintColor:[UIColor whiteColor]];
[self.navigationController.navigationBar setTranslucent:NO];
Para Swift2.x esto funciona:
self.navigationController?.navigationBar.barTintColor = UIColor.redColor()
Para Swift3.x esto funciona:
self.navigationController?.navigationBar.barTintColor = UIColor.red
Si desea establecer el color del tinte y el color de la barra para toda la aplicación, se puede agregar el siguiente código a AppDelegate.swift en
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
var navigationBarAppearace = UINavigationBar.appearance()
navigationBarAppearace.tintColor = UIColor(red:1.00, green:1.00, blue:1.00, alpha:1.0)
navigationBarAppearace.barTintColor = UIColor(red:0.76, green:0.40, blue:0.40, alpha:1.0)
navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
return true
`
Swift 4
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.barTintColor = UIColor.orange
navigationController?.navigationBar.tintColor = UIColor.white
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
}
Swift 4.1
Agregue un func a viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
setup()
}
En la función setup()
, agregue:
func setup() {
navigationController?.navigationBar.prefersLargeTitles = true
navigationController?.navigationBar.barStyle = .blackOpaque
navigationItem.title = "YOUR_TITLE_HERE"
navigationController?.navigationBar.barTintColor = .black
let attributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
navigationController?.navigationBar.largeTitleTextAttributes = attributes
}
Para hacer este trabajo en el guión gráfico (Interface Builder Inspector)
Con la ayuda de IBDesignable
, podemos agregar más opciones al Inspector de Interface Builder para UINavigationController
y modificarlas en el guión gráfico. Primero, agregue el siguiente código a su proyecto.
@IBDesignable extension UINavigationController {
@IBInspectable var barTintColor: UIColor? {
set {
navigationBar.barTintColor = newValue
}
get {
guard let color = navigationBar.barTintColor else { return nil }
return color
}
}
@IBInspectable var tintColor: UIColor? {
set {
navigationBar.tintColor = newValue
}
get {
guard let color = navigationBar.tintColor else { return nil }
return color
}
}
@IBInspectable var titleColor: UIColor? {
set {
guard let color = newValue else { return }
navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: color]
}
get {
return navigationBar.titleTextAttributes?["NSForegroundColorAttributeName"] as? UIColor
}
}
}
Luego simplemente establece los atributos para UINavigationController en el guión gráfico.