La barra de estado no desaparecerá

112

Estoy creando una aplicación y quiero que la barra de estado esté oculta. Cuando pruebo la aplicación, la barra de estado está oculta mientras se muestra la pantalla de inicio, pero una vez que la aplicación está completamente cargada, la barra de estado vuelve a aparecer.

Estoy usando Xcode 5 y iOS 7, y he intentado deshabilitar la barra de estado mediante programación

  ([[UIApplication sharedApplication] setStatusBarHidden:YES    
      withAnimation:UIStatusBarAnimationFade];),

en el archivo info.plist y usando el inspector de atributos en el archivo .xib. Nada parece funcionar.

¿Algunas ideas?

user2397282
fuente

Respuestas:

220

Intente agregar el siguiente método al controlador de vista raíz de su aplicación:

- (BOOL)prefersStatusBarHidden
{
    return YES;
}
Quentin
fuente
2
¿Cómo hacer esto a nivel mundial?
jjxtra
16
Además, como se indica en los documentos de Apple, debe llamar al [self setNeedsStatusBarAppearanceUpdate];después de llamar a este método con algo diferente al valor predeterminado (el valor predeterminado es NO).
manderson
3
@PsychoDad Verifique mi respuesta para una solución más global.
Idan
2
Perfecto, gracias. ¡Simplemente no puedo entender por qué iOS 7 está haciendo esto y no respeta los XIB que NO contienen configuraciones de barra de estado!
justinhartman
1
Agregar esto en un ViewController agregado a la pila es todo lo que necesitaba para ocultar la barra de estado en ese viewcontroller; la barra de estado regresa cuando se elimina este controlador de vista.
MacD
126

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

Esto le permitirá configurar la barra de estado en modo oculto . Esto lo establece en un global a diferencia de otras respuestas proporcionadas.

ACTUALIZACIÓN: Si desea que la barra de estado se oculte en la pantalla de inicio , no olvide marcar " Ocultar durante el inicio de la aplicación " en las opciones de la barra de estado de destino. Además, puede agregar "La barra de estado está inicialmente oculta " a " " en la lista si no desea hacerlo con el código dentro de la aplicación.

Idan
fuente
2
Me tomó mucho tiempo resolver esto. Es un problema que creo que todos tendrían y Apple no lo mencionó lo suficiente. encantado de ayudar ...
Idan
7
funciona bien, no olvide establecer el valor .plist para "La barra de estado está inicialmente oculta" en SÍ.
andreas-supersmart
1
Vaya, eso fue lo único que funcionó con Kobold2d 2.1.0 y iOS 7, ¡muchas gracias!
Binarian
5
Apple no es realmente un campeón de la compatibilidad con versiones anteriores. Bailemos todos al son de su flauta y actualice cada una de nuestras aplicaciones. Lo siento, estoy desahogando la frustración. Causado por Apple.
Henrik Erlandsson
1
finalmente me funciona. Porque - (BOOL) prefiere que el métodostatusbarhidden no funcione en modelview.
utkal patel
73

El código que publicó funciona para iOS 6.1 y versiones anteriores. Para iOS 7, Apple ha puesto a disposición nuevos métodos para controlar directamente la barra de estado para cada vista. Desactivar esta opción en su Info.plist le permitirá ocultar la barra de estado, al menos para la Vista previa del desarrollador actual (4).

Agregue esto y establezca en NO

Como referencia, consulte la guía de transición de iOS 7 que está disponible en el portal de desarrolladores de Apple.

Sven
fuente
3
En mi opinión, esta respuesta es mejor porque en mi aplicación, solo quiero ocultar la barra de estado en modo horizontal, ¡gracias!
Son Nguyen
gracias, esto me ayuda ya que quiero ocultarlo para toda mi aplicación
kevinl
2
En mi opinión, esta respuesta debería ser la mejor respuesta -> Se explica aquí developer.apple.com/library/prerelease/ios/documentation/…
marceloquinta
5
He hecho esto, pero parece que acaba de ocultar la barra de estado, sin embargo, mi aplicación todavía está 'empujada hacia abajo' por la cantidad de espacio que ocuparía la barra de estado, ¡y todavía puedo ver el indicador de batería!
vedran
36

Bueno, trato de ocultar la barra de estado en toda mi aplicación y en la "aplicación" -info.plist y agrego dos filas en el diccionario "Lista de propiedades de información". Agrego "Ver apariencia de la barra de estado basada en el controlador" establece NO y en " La barra de estado está inicialmente oculta "establece SÍ y para mí funciona n_n '

plist info

user_Dennis_Mostajo
fuente
2
Esto obliga a su aplicación a entrar en un modo de compatibilidad diseñado únicamente para que las aplicaciones antiguas se ejecuten según lo previsto en iOS 7 cuando los desarrolladores no tienen tiempo para arreglar la aplicación para la nueva forma de hacer las cosas. En su lugar, debe implementar los métodos prefer * en sus controladores de vista.
lhunath
17

Sin embargo, si usa UIImagePicker, la barra de estado vuelve a aparecer.

En ese caso, debe ocultar la barra de estado como se muestra a continuación,

- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {

// for iOS7
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }
solos
fuente
2
Tengo el mismo problema. La barra de estado está oculta hasta que uso UIImagePicker. Probé tu solución y no me funciona. ¿Necesitaba agregar algo además del código en su publicación?
Dev01
@WootWoot También agregué - (BOOL) prefersStatusBarHidden {return YES; } para ver los controladores. Por favor pruebalo.
solo
no parece funcionar para mí .. ¿Deberías llamar setNeedsStatusBarAppearanceUpdate?
RyanM
Necesito ocultar la barra de estado al hacer clic en un botón. He intentado el siguiente código pero no funcionó. ¿Puede alguien ayudarme por favor? [[UIApplication sharedApplication] setStatusBarHidden: SÍ];
Janitheshan
8

Después de una larga búsqueda, finalmente encontré una solución muy simple que también soluciona el UIImagePickerControllerproblema.

Como se mencionó en las otras respuestas, configure su barra de estado oculta en su AppDelegate didFinishLaunching, y configure la "Vista de la apariencia de la barra de estado basada en el controlador" en NO.

Luego, en su AppDelegate:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

et voila - su barra de estado permanecerá oculta incluso cuando el UIImagePickerController es el principal.

Esto es mejor que 'volver a ocultarlo' cada vez que presenta un UIImagePickerController, ya que permanece oculto en toda la aplicación.

ikuramedia
fuente
2
Aunque algo todavía parece estar roto en iOS7 en iPad al menos, el UIImagePickerController todavía muestra una barra de estado la segunda vez que se muestra ... Hurrrr ... :-( Actualmente estoy usando el appDelegate junto con ocultarlo nuevamente en cada vista. . Entonces, incluso si se ve sucio por un momento, se vuelve a arreglar rápidamente.
ikuramedia
1
Este es el único método que funcionó para mí en iOS8 ... de alguna manera prefiere que no se llame a StatusBarHidden en mi controlador de vista.
mojuba
7

Para ocultar la barra de estado en un UIViewController en particular, simplemente agregue esto:

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

Espero que esto ayude !

Mike Gledhill
fuente
!! Esta es la solución que funcionó para mí en iOS 9.2, la modificación de plist no tuvo ningún efecto.
mico
5

Puede ocultarse del resumen del proyecto. hay una casilla de verificación oculta durante el lanzamiento.

Ver la instantánea

ingrese la descripción de la imagen aquí

sohail.hussain.dyn
fuente
4

Encontré esta solución para mí. Funciona a las mil maravillas. Escriba este código en su viewcontroller en el que quería usar UIImagePickerController.

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

Además de la respuesta de arriba, asegúrese de implementar el método imagePickerControllerDidCancel y agregue el mismo código allí también.

Estafador
fuente
2

También estaba teniendo problemas con UIImagePicker. Similar a la respuesta de Alones, mi solución fue la siguiente. Agregué esta línea o código:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

a esta función:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

No he probado esto con iOS 6 o anterior, pero funciona muy bien en iOS 7.

Dev01
fuente
2

Solución rápida

solo agregue esto a sus controladores de vista:

override func prefersStatusBarHidden() -> Bool {
    return true
}
Dan Beaulieu
fuente
0

Estoy usando Xcode 6, esta solución funciona en iOS 7 y 8 para mí:

Primero, establezca "Ver apariencia de la barra de estado basada en el controlador" en NO en el archivo plist.

En segundo lugar, en AppDelegate, agregue esto:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
RRN
fuente
0

Mi problema fue que utilicé la contención del controlador de vista. Solo el controlador de vista superior, que está integrado en un controlador de navegación, por ejemplo, puede ocultar o mostrar la barra de estado.

pruebas
fuente