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 = .lightContent
Info.plist
View controller-based status bar appearance -> NO
en AppDelegate.swift didFinishLaunchingWithOptions
UIApplication.sharedApplication().statusBarStyle = .LightContent
Info.plist
View controller-based status bar appearance -> NO
fuente
Tienes que configurar:
navigationController.navigationBar.barStyle = .black
y el texto aparecerá en blanco
fuente
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
. Solo tienes que escribir esta líneaviewDidLoad
para que funcione bien. Asegúrate de conservarView controller-based status bar appearance = YES
esta 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
.Lightcontent
todos los controladores de vista dentro de un UINavigationController.(¡Además, elimine
View controller-based status bar appearance
de 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:
UIViewControllerBasedStatusBarAppearance
aYES
de.plist
viewDidLoad
llamadaself.setNeedsStatusBarAppearanceUpdate();
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
navigationBar.barStyle
finalpara 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
UINavigationController
extension
: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 -> NO
Paso 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