Estoy tratando de cambiar el color de la barra de estado en mi aplicación Swift a blanco, pero estoy golpeando una pared de ladrillos. Tengo 3 ViewControllers que están integrados en un NavigationController (¿podría ser ese el problema? Ya intenté colocar el código en la clase NavigationController). Probé los dos siguientes fragmentos de código en didFinishLaunchingWithOptions de mi AppDelegate Archivo .swift pero ninguno funcionó.
application.statusBarStyle = .LightContent
y
UIApplication.sharedApplication().statusBarStyle = .LightContent
Todo lo que los Docs tienen que decir al respecto es que UIBarButtonStyle es un Int y me dio este fragmento de enumeración que no me ayudó en absoluto con la implementación.
enum UIStatusBarStyle : Int {
case Default
case LightContent
case BlackOpaque
}
¿Qué me estoy perdiendo?
fuente

en AppDelegate.swift didFinishLaunchingWithOptions
UIApplication.shared.statusBarStyle = .lightContentInfo.plist
View controller-based status bar appearance -> NOen AppDelegate.swift didFinishLaunchingWithOptions
UIApplication.sharedApplication().statusBarStyle = .LightContentInfo.plist
View controller-based status bar appearance -> NOfuente
Tienes que configurar:
navigationController.navigationBar.barStyle = .blacky el texto aparecerá en blanco
fuente
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }. Solo tienes que escribir esta líneaviewDidLoadpara que funcione bien. Asegúrate de conservarView controller-based status bar appearance = YESesta solución.Para iOS9.xy Xcode7, simplemente ponga esto dentro
AppDelegate.swift:func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { UINavigationBar.appearance().barStyle = .Black }Esto cambiará automáticamente el estilo de la barra de estado a
.Lightcontenttodos los controladores de vista dentro de un UINavigationController.(¡Además, elimine
View controller-based status bar appearancede Info.plist para suprimir las advertencias que probablemente también esté viendo!)fuente
En Swift 3, el estilo de la barra de estado ha cambiado a una propiedad calculada en UIViewController que puede anular de esta manera:
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent //or default }fuente
En iOS 9, el siguiente (setStatusBarStyle) está en desuso y recibirá una advertencia si sigue ese camino.
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)Si desea que se cambien todas las barras de estado de una sola vez, intente agregar lo siguiente a su Info.plist. Esto también hará que la barra de estado de la pantalla de inicio sea blanca. Mientras que el código anterior no lo hará.
<key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>fuente
Para mí, todo lo anterior no funcionará hasta que agregue:
self.navigationController?.navigationBar.barStyle = .black;entonces:
UIViewControllerBasedStatusBarAppearanceaYESde.plistviewDidLoadllamadaself.setNeedsStatusBarAppearanceUpdate();override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }navigationBar.barStylefinalpara contenido ligero :
override var preferredStatusBarStyle: UIStatusBarStyle { self.navigationController?.navigationBar.barStyle = .black;//or default return .lightContent //or default }y para contenido negro , uso predeterminado
La fuente de aquí y aquí .
y si esto no funciona, puede intentar agregar un
UINavigationControllerextension:extension UINavigationController { override open var preferredStatusBarStyle: UIStatusBarStyle { if let lastVC = self.viewControllers.last { return lastVC.preferredStatusBarStyle } return .default } }fuente
Es extraño, usar Swift 3.1 y XC8.2.1, pero todo lo anterior no funcionó.
Lo que hice, es solo
extension UINavigationController { override open var preferredStatusBarStyle: UIStatusBarStyle { get { return .lightContent } } }Sin Plist, sin otras cosas. HTH
fuente
En Swift 3.0, puede anular un captador en ViewController para la apariencia de la barra de estado basada en el controlador de View:
override var preferredStatusBarStyle: UIStatusBarStyle { get { return .lightContent } }fuente
No edite su Info.plist. Agregue esto a su ViewController.swift:
override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent }fuente
Paso 1. Agregar a info.plist
View controller-based status bar appearance -> NOPaso 2. Agregue código en el método donde necesita cambiar el color de la barra de estado:
UIApplication.shared.statusBarStyle = .lightContent //(or .default) setNeedsStatusBarAppearanceUpdate()Línea clave de código:
setNeedsStatusBarAppearanceUpdate()fuente