the - Configuración de statusbarStyle(obsoleto en iOS 9.0)
swift tutorial español (5)
Añadir View controller-based status bar appearance NO
en Info.plist
Y seleccione Luz en Estilo de barra de estado en Información de implementación
Acabo de descargar el nuevo xCode 10.0 y vio que el antiguo statusBarStyle ha quedado en desuso desde iOS 9.0.
Advertencia: Setter for ''statusBarStyle'' was deprecated in iOS 9.0: Use -[UIViewController preferredStatusBarStyle]
Código en UIApplication.shared.statusBarStyle = .default
: UIApplication.shared.statusBarStyle = .default
Intenté usar self.preferredStatusBarStyle
, pero descubrí que la propiedad es solo un captador. ¿Alguien sabe cómo configurar el statusBarStyle
?
Editar
Quiero cambiar el statusBarStyle dentro de una función, donde un usuario puede cambiar entre diferentes temas. Por ejemplo:
func changeStatusBar(toDarkMode: Bool) {
if toDarkMode {
// Set to light statusBarStyle
} else {
// Set to default
}
}
Configure su variable darkMode usando el mismo código que tiene ahora, luego úsela en la variable computada que espera el sistema:
var darkMode = false
override var preferredStatusBarStyle : UIStatusBarStyle {
return darkMode ? .default : .lightContent
}
Dependiendo del contexto, es posible que deba forzar una actualización de la pantalla para que tenga efecto. Lo harías con la siguiente llamada:
setNeedsStatusBarAppearanceUpdate()
En swift4 , puedes usar este bloque de código debajo de viewDidLoad()
en tu ViewController
-
override var preferredStatusBarStyle : UIStatusBarStyle {
return .lightContent
}
Ninguna de las otras sugerencias funcionó para mí. Terminé poniéndolo a trabajar por:
Ajuste:
override var preferredStatusBarStyle : UIStatusBarStyle { return .lightContent }
Vocación:
setNeedsStatusBarAppearanceUpdate()
Si usa UINavigationController, también puede usar el siguiente código:
extension UINavigationController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
return topViewController?.preferredStatusBarStyle ?? .default
}
}
El motivo es que setNeedsStatusBarAppearanceUpdate()
no llama a childs preferredStatusBarStyle