transparente quitar ocultar estado desaparece como barra ios7 show-hide statusbar

ios7 - quitar - Cómo ocultar la barra de estado de iOS



dock transparente en ios 11 (20)

En mi aplicación de video iOS, la barra de estado está oculta en algunos controladores de vista. Lo he hecho usando el siguiente código.

[[UIApplication sharedApplication] setStatusBarHidden:YES];

  • Funciona para iOS 5 y iOS 6, pero no en iOS 7.

  • He intentado con este controlador de vista en particular,

P.ej:

-(BOOL)prefersStatusBarHidden { return YES; }

Funciona bien, pero no puedo mostrar la barra de estado nuevamente en el controlador de vista principal.


Pruebe este método simple:

C objetivo:

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated] [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated] [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; }

Rápido:

override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None) } override func viewWillDisappear(animated: Bool) { super.viewWillDisappear(animated) UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None) }


Añadir la siguiente línea en viewdidload

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

y agregar nuevo método

- (BOOL)prefersStatusBarHidden { return YES; }

también cambiar el archivo info.plist Ver la apariencia de la barra de estado basada en el controlador "= NO

me funciona


Actualización para Swift 3:

Actualice Info.plist con la siguiente información:

View controller-based status bar appearance: NO

Luego, en un ViewController o en otro lugar:

UIApplication.shared.isStatusBarHidden = true


Agregue lo siguiente a su Info.plist:

<key>UIStatusBarHidden</key> <true/> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>


Aquí está la versión Swift (pre iOS9):

override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None) } override func viewWillDisappear(animated: Bool) { super.viewWillDisappear(animated) UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None) }

Esto también funciona (iOS7 +):

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

También necesita llamar:

setNeedsStatusBarAppearanceUpdate()

en decir viewDidLoad() .

Tenga en cuenta que si utiliza un controlador SplitView, o algún otro controlador de vista de container , también necesita que devuelva su clase cuando se envíe childViewControllerForStatusBarHidden . Una forma de hacer esto es tener una var. statusController pública para, por ejemplo, statusController , y devolverla en este método anulado.


Debe agregar este valor a plist: " Ver el aspecto de la barra de estado basada en el controlador " y establecerlo en " NO ".


Debe agregar este valor a plist: "Ver el aspecto de la barra de estado basada en el controlador" y establecerlo en "NO".


Desde UIKit > UIApplication.h :

// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system. @property(nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden; - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);

Por lo tanto, debe establecer la View controller-based status bar appearance en NO


En el Plist agregar las siguientes propiedades.

Status bar is initially hidden = YES View controller-based status bar appearance = NO

Ahora la barra de estado se oculta.


En iOS10, todo lo que necesitaba hacer es anular la var prefersStatusBarHidden en mi RootViewController (Swift):

override var prefersStatusBarHidden: Bool { return true }


Hice lo siguiente y parece funcionar (incluso en iOS 8):

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) { [[UIApplication sharedApplication] setStatusBarHidden:YES]; } } - (BOOL)prefersStatusBarHidden { return YES; }


Para ocultar la barra de estado en iOS7 necesitas 2 líneas de código

  1. en aplicación: (UIApplication *) aplicación didFinishLaunchingWithOptions: (NSDictionary *) launchOptions write

    [[UIApplication sharedApplication] setStatusBarHidden:YES];

  2. en info.plist agrega esto

    View-Controller Based Status Bar Appearance = NO


Para ocultar su barra de estado en iOS7:

Abra su archivo plist, luego agregue y agregue una fila llamada "Ver el aspecto de la barra de estado basada en el controlador" y establezca su valor en NO .


Para responder a la pregunta de Susitha: use setNeedsStatusBarAppearanceUpdate . Esto hará una llamada a prefersStatusBarHidden para actualizar con el estado deseado de la barra de estado. Prueba esto:

@property (nonatomic, getter=isHideStatusBar) BOOL hideStatusBar; // Give this a default value early - (BOOL)prefersStatusBarHidden { return self.isHideStatusBar; } - (void)someMethod { // triggered by an event or user action [self setHideStatusBar:YES]; [self setNeedsStatusBarAppearanceUpdate]; }

Si desea volver a ver la barra de estado, configure su propiedad hideStatusBar (o como se llame) en NO. Llama a preferStatusBarHidden indirectamente haciendo otra llamada a

[self setNeedsStatusBarAppearanceUpdate]


Para una mejor comprensión agrega algunas fotos con comentarios:

App antes de cualquier cambio.

Se encuentra en la carpeta de Project Navigator llamada Supporting Files y haga clic en el archivo * .plist

Después de que se muestren diferentes ajustes de su aplicación. UIStatusBarHidden agregar 2 claves UIStatusBarHidden y UIViewControllerBasedStatusBarAppearance . Puedes hacerlo simplemente haciendo clic en el botón +

Después de presionar + puede elegir una de las teclas, simplemente comience a escribir.

Versión correcta:

Y finalmente la aplicación después de aplicar estos cambios:

Además, aquí puedes encontrar una solución alternativa.


Trata eso;

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];


Pasos para ocultar la barra de estado en iOS
1. Abra el archivo AppDelegate.m , agregue application.statusBarHidden en el método didFinishLaunchingWithOptions

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. application.statusBarHidden = YES; return YES; }

  1. abrir info.plist y establecer

View controller-based status bar appearance establecido NO


SOLUCIÓN FIJA PARA SWIFT 3+ (iOS 9, 10)

1- En info.plist establecido debajo de la propiedad

2- Pegar debajo del código al controlador raíz, Para

private var isStatusBarHidden = true { didSet { setNeedsStatusBarAppearanceUpdate() } } override var prefersStatusBarHidden: Bool { return isStatusBarHidden }

Puedes llamar a isStatusBarHidden = true y isStatusBarHidden = false donde quieras hide/show barra de estado


iOS 9 en adelante:

Como el método statusBarHidden se ha desaprobado de iOS9 , debe agregar dos valores en plist como se muestra a continuación:

<key>UIStatusBarHidden</key> <true/> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>

o por Interfaz de Usuario Por favor, refiérase abajo la imagen:

Como statusBarHidden está obsoleto de iOS9 :

@property (readwrite, nonatomic, getter = isStatusBarHidden) BOOL statusBarHidden NS_ DEPRECATED _IOS (2_0, 9_0 , "Use - [UIViewController prefersStatusBarHidden]") __TVOS_PROHIBITED;


  • UIApplication.setStatusBarX está en desuso a partir de iOS9
  • Está obsoleto por tener UIViewControllerBasedStatusBarAppearance = NO en su info.plist
  • Así que deberíamos usar preferredStatusBarX en todos nuestros controladores de vista

Pero se vuelve más interesante cuando hay un UINavigationController involucrado:

  • Si navigationBarHidden = true, se llama al stateBarX preferido de UIViewController, ya que el niño muestra el contenido debajo de la barra de estado.
  • Si navigationBarHidden = false, se llama USTavigationController preferredStatusBarX, después de todo, muestra el contenido debajo de la barra de estado.
  • El preferidoStatusBarStyle predeterminado de UINavigationController utiliza el valor de UINav.navigationBar.barStyle. .Default = contenido de la barra de estado negro, .Black = contenido de la barra de estado blanco.
  • Por lo tanto, si está configurando barTintColor a un color personalizado (que es probable que tenga), también debe configurar barStyle en .Negro para obtener el contenido de la barra de estado blanca. Establecí barStyle a negro antes de configurar barTintColor, en caso de que barStyle anule la barraTintColor.
  • Una alternativa es que puede subclase UINavigationController en lugar de jugar con el estilo de barra.
  • SIN EMBARGO, si subclase UINavigationController, no obtendrá control sobre la barra de estado si navigationBarHidden = verdadero. De alguna manera, UIKit va directamente al controlador UIView sin recurrir al controlador UINavigation en esta situación. Pensé que debería ser responsabilidad del controlador de UINavigation pedirle al niño que se encoge de hombros.
  • Y solo se muestra UIViewController en la barra de estado si modalPresentationStyle = .FullScreen.
  • Si tiene un controlador de vista modal de estilo de presentación personalizado y realmente desea que controle la barra de estado, puede establecer modalPresentationCapturesStatusBarAppearance = true.