tutorial the programming library language español developer apple ios swift xcode

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:

  1. Ajuste:

    override var preferredStatusBarStyle : UIStatusBarStyle { return .lightContent }

  2. 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