ios uiviewcontroller ios7 statusbar uistatusbar

Barra de estado de IOS7 hide/show en los controladores de selección



uiviewcontroller statusbar (5)

En iOS 7 y posterior, simplemente implemente -prefersStatusBarHidden , por ejemplo, en un UIViewController que debería ocultar la barra de estado:

- (BOOL)prefersStatusBarHidden { return YES; }

El valor predeterminado es NO .

Me gustaría mostrar y ocultar la barra de estado en algunos controladores. ¿Se puede hacer esto o es más una configuración general de la aplicación?

He visto muchas publicaciones / preguntas sobre la actualización plist:

View controller-based status bar appearance - NO

Si esto se completa, ¿qué control se da?

Estoy buscando mostrar la barra de estado en la pantalla principal de la aplicación. Pero, por ejemplo, en un menú lateral (diapositiva), me gustaría que no se muestre, ¿es esto posible? ¿Se puede cambiar esto en IB o código?

EDITAR - Estoy usando una implementación de https://github.com/edgecase/ECSlidingViewController .

El controlador principal (que muestra la primera página) debe mostrar la barra de estado, pero el controlador de menú izquierdo cuando se desliza no debería.

Creo que el problema es que ambos se sientan dentro del mismo controlador raíz (controlador de vista deslizante) por lo que es difícil de completar.

Idealmente, si la pantalla de inicio (página principal) pudiera tomar la barra de estado cuando se desliza, se vería mejor.


La configuración "View controller-based status bar appearance" solo controla si se debe aplicar una configuración basada en el controlador en iOS 7.

Si configura esta opción plist en NO, tiene que activar y desactivar manualmente la barra de estado (como lo fue hasta iOS 6):

[[UIApplication sharedApplication] setStatusBarHidden:YES]

Si establece esta opción plist en YES, puede agregar este método a cada uno de sus viewControllers para configurar el statusBar independientemente para cada controlador (lo que es especialmente bueno si tiene un sistema de subclase inteligente de viewControllers)

- (BOOL)prefersStatusBarHidden { return YES; }

Editar:

hay dos métodos más que son de interés si está optando por la nueva apariencia de la barra de estado basada en viewController -

Forzar una actualización de la barra de estado con:

[self setNeedsStatusBarAppearanceUpdate]

Si tiene controladores anidados (por ejemplo, un contentViewController en una subclase TabBarController, su subclase TabBarController podría preguntarle cuál es su actual childViewController y reenviar esta configuración. Creo que en su caso específico podría ser útil:

- (UIViewController *)childViewControllerForStatusBarHidden { return _myChildViewController; } - (UIViewController *)childViewControllerForStatusBarStyle { return _myOtherViewController; }


Swift version de la de :

override func prefersStatusBarHidden() -> Bool { return true }


También puede mostrar / ocultar la barra de estado en un bloque de animación, colocando el código de animación dentro de la propiedad didSet de la variable que describe si debe mostrarse u ocultarse. Cuando establece un nuevo valor para el statusBarHidden Bool, esto activa automáticamente la actualización animada de la barra de estado durante la duración que ha elegido.

/// Swift 3 syntax: var statusBarHidden: Bool = true { didSet { UIView.animate(withDuration: 0.5) { () -> Void in self.setNeedsStatusBarAppearanceUpdate() } } } override var prefersStatusBarHidden: Bool { return statusBarHidden } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) statusBarHidden = false // show statusBar, animated, by triggering didSet block }


Swift 3 :

override var prefersStatusBarHidden: Bool { return true }