No se puede ocultar la barra de estado en iOS7

Acabo de actualizar mi iPhone 5 iOS 7 a la versión beta. Ahora cuando ejecuto mi aplicación desde Xcode 5 en este iPhone, la barra de estado no se oculta, aunque debería.

No funciona:

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

No funciona:

 [UIApplication sharedApplication].statusBarHidden = YES; 

No se puede iniciar sesión en los foros de desarrolladores de Apple

en su archivo plist de aplicaciones agregue una fila llámelo “Ver apariencia de la barra de estado basada en el controlador” y configúrelo como NO

Tenga en cuenta que esto simplemente no funciona, si está utilizando UIImagePickerController en la aplicación.

de http://www.openfl.org/developer/forums/general-discussion/iphone-5ios-7-cant-hide-status-bar/ , la solución de mgiroux

Un ejemplo que agrega View Base Controller a su configuración de Info en Xcode

Agregar método en su controlador de vista.

 - (BOOL)prefersStatusBarHidden { return YES; } 

En Plist, agregue las siguientes propiedades.

-> La Status bar is initially hidden = SÍ

-> View controller-based status bar appearance = NO

Agregue ambos: ahora la barra de estado desaparecerá.

Para ocultar la barra de estado en una vista única, debe usar:

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

Al principio, esto no funcionó para mí, y luego vi en la documentación de este método que dice: // Establecer el estadoBarHidden no hace nada si su aplicación está utilizando el sistema de barra de estado basado en UIViewController por defecto.

Esto tiene que hacerse en el archivo plist, agregando la View controller-based status bar appearance la clave a NO . Y luego funcionó.

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

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

     [application setStatusBarHidden:YES]; 
  2. en info.plist agrega esto

     View-Controller Based Status Bar Appearance = NO 

Para utilizar el método de aplicación UIA heredado para ocultar / mostrar la barra de estado, tu aplicación debe establecer un valor de plist para iOS 7:

View-Controller Based Status Bar Appearance = NO

Este valor se establece en SÍ de forma predeterminada. Si lo cambia a NO, puede usar los métodos heredados. Si lo deja en SÍ, aún puede ocultar la barra de estado, pero depende de cada subclase del controlador de vista en su aplicación anular: prefersStatusBarHidden que prefersStatusBarHidden devuelva SÍ.

Cada vez que su aplicación necesite la apariencia de la barra de estado o la visibilidad para cambiar, y la apariencia de la barra de estado basada en View-Controller está establecida en YES, su controlador de vista más externo necesita llamar:

setNeedsStatusBarAppearanceUpdateAnimation

Hay tantas combinaciones sugeridas para este problema, pero el problema es que iOS 6 y 7 usan diferentes métodos para ocultar la barra de estado. Nunca he tenido éxito configurando las configuraciones plist para habilitar el comportamiento estilo iOS6 en iOS 7, pero si está construyendo su aplicación para soportar iOS 6+, necesita usar 3 métodos a la vez para asegurar que un controlador de vista particular oculte el estado bar:

 // for ios 7 - (BOOL)prefersStatusBarHidden{ return YES; } // for ios 6 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[UIApplication sharedApplication] setStatusBarHidden:YES]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; // explicitly set the bar to show or it will remain hidden for other view controllers [[UIApplication sharedApplication] setStatusBarHidden:NO]; } 

Esto debería funcionar independientemente de su configuración de plist.

Tuve que hacer los dos cambios a continuación para ocultar la barra de estado:

Agregue este código al controlador de vista donde desea ocultar la barra de estado:

 - (BOOL)prefersStatusBarHidden { return YES; } 

Agregue esto a su archivo .plist (vaya a ‘información’ en la configuración de su aplicación)

 View controller-based status bar appearance --- NO 

Luego puede llamar a esta línea para ocultar la barra de estado:

 [[UIApplication sharedApplication] setStatusBarHidden:YES]; 

Simplemente agregue estas 2 líneas en el archivo info.plist. Hará que la solución para iOS7 y la versión anterior ambos.

  • La barra de estado está inicialmente oculta = SÍ
  • Ver apariencia de barra de estado basada en controlador = NO

Navegue hasta el proyecto y seleccione Objetivos -> General y verá que la checkbox “Estilo de barra de estado … Ocultar durante el inicio de la aplicación” estará marcada. Esto funcionará

Prueba este simple método:

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

Lo único que funcionó para mí es agregar lo siguiente en tu lista

 UIStatusBarHidden  UIViewControllerBasedStatusBarAppearance  

El método más sencillo que he encontrado para ocultar la barra de estado en toda la aplicación es crear una category en UIViewController y anular prefersStatusBarHidden . De esta forma, no tiene que escribir este método en cada controlador de vista individual.

UIViewController + HideStatusBar.h

 #import  @interface UIViewController (HideStatusBar) @end 

UIViewController + HideStatusBar.m

 #import "UIViewController+HideStatusBar.h" @implementation UIViewController (HideStatusBar) //Pragma Marks suppress compiler warning in LLVM. //Technically, you shouldn't override methods by using a category, //but I feel that in this case it won't hurt so long as you truly //want every view controller to hide the status bar. //Other opinions on this are definitely welcome #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation" - (BOOL)prefersStatusBarHidden { return YES; } #pragma clang diagnostic pop @end 

-(BOOL)prefersStatusBarHidden { return YES; }

  1. En plist agregar —-

    Ver la apariencia de la barra de estado basada en el controlador — NO

  2. En cada viewController escribe

     - (void) viewDidLayoutSubviews { CGRect viewBounds = self.view.bounds; CGFloat topBarOffset = 20.0; viewBounds.origin.y = -topBarOffset; self.view.bounds = viewBounds; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//for status bar style } 

Para el problema de la barra de estado en iOS 7, pero el objective debe ser 5.1 o superior para la aplicación

Pasos para Ocultar la barra de estado en iOS 7:

1. Vaya a su archivo info.plist de la aplicación.

2.Y establecer, ver la apariencia de la barra de estado basada en el controlador: booleana NO

Espero haber resuelto el problema de la barra de estado …..

Para iOS 7 en una sola vista, utiliza el método viewWillappear:

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

Para visualizar la barra de estado use:

 [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO]; 

En el archivo de Info Plist, agregue una fila para la siguiente propiedad

Nombre de la propiedad: Ver apariencia de la barra de estado basada en el controlador

Valor: NO

Muchas de las respuestas de este hilo funcionan, pero entiendo que si intentas hacer algo dynamic necesitarás llamar:

 [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)]; 

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

 - (BOOL)prefersStatusBarHidden { return YES; } 

Probé todas estas opciones publicadas aquí en mi proyecto y no funcionarían. Pensé que podría tener que ver con el hecho de que había actualizado mi Xcode y luego la aplicación a iOS 7 y algunas configuraciones se habían estropeado en alguna parte. Decidí crear un proyecto completamente nuevo y después de simplemente configurar: ” Status bar is initially hidden = YES ” y ” View controller-based status bar appearance = NO “, como indicaron otros funcionó correctamente (es decir, sin barra de estado) )

Así que mi consejo si estás trabajando en un proyecto que se ha actualizado a iOS 7 desde una versión anterior y has probado todas las otras opciones es crear un nuevo proyecto.

Puede verificar este código , pod UIViewController + ODStatusBar

Para Swift 2.0+ IOS 9

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

Para ocultar la barra de estado para viewController específico

 - (BOOL)prefersStatusBarHidden { return YES; } 

Para configurar la barra de estado Oculto para la aplicación:

  • establecer la View controller-based status bar appearance en NO en .plist y en la application: didFinishLaunchingWithOptions: set: [application setStatusBarHidden:YES];

    Nota: setStatusBarHidden: obsoleto

O

  • en Configuración del proyecto -> Pestaña General -> Información de implementación

    Marque la casilla Hide Status bar .

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { application.statusBarHidden = YES; return YES; } 

No estoy seguro de por qué “no puede iniciar sesión en los foros de desarrolladores de Apple”, pero (sin violar el NDA) también puede ocultar su barra de estado a través de Xcode. Es una configuración general en su objective de aplicación. enter image description here