objective-c statusbar ios7

objective c - No se puede ocultar la barra de estado en iOS7



objective-c statusbar (25)

Acabo de actualizar mi iPhone 5 iOS 7 a cuatro versiones 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 puedo iniciar sesión en los foros de desarrolladores de Apple


  1. En lista añadir ----

    Ver el aspecto 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 objetivo debe ser 5.1 y superior para la aplicación


Agregue el método en su controlador de vista.

- (BOOL)prefersStatusBarHidden { return YES; }


El método más fácil 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 manera, no tiene que escribir este método en cada controlador de vista único.

UIViewController + HideStatusBar.h

#import <UIKit/UIKit.h> @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


En el Plist agregar las siguientes propiedades.

-> La Status bar is initially hidden = SÍ

-> View controller-based status bar appearance = NO

Agrega ambos - ahora la barra de estado desaparecerá.


En el archivo Info Plist Agregar una fila para la siguiente propiedad

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

Valor: NO


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

- (BOOL)prefersStatusBarHidden { return YES; }


Lo único que me funcionó es agregar lo siguiente en tu lista

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


Muchas de las respuestas en este hilo funcionan, pero entiendo que si intenta hacer algo dinámico, a la larga deberá llamar:

[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];


No estoy seguro de por qué "no puede iniciar sesión en los foros de desarrolladores de Apple", pero (sin violar la NDA) también puede ocultar su barra de estado a través de Xcode. Es un ajuste general en el objetivo de su aplicación.


Para Swift 2.0+ IOS 9

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


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

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

Para visualizar el uso de la barra de estado:

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


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

  1. (UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions write

    [application setStatusBarHidden:YES];

  2. en info.plist agrega esto

    View-Controller Based Status Bar Appearance = NO


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 una sierra en la documentación de este método que dice: // Configurar statusBarHidden no hace nada si su aplicación usa el sistema de barra de estado basado en UIViewController predeterminado.

Esto se debe hacer en el archivo plist, agregando el View controller-based status bar appearance clave establecido en NO . Y luego funcionó.


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:

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

    Nota: setStatusBarHidden: en desuso

O

  • en la configuración del proyecto -> pestaña General -> Información de implementación

    Marque la casilla Hide Status bar .


Para utilizar el método de aplicación UIA heredado para ocultar / mostrar la barra de estado, su aplicación debe establecer un valor mínimo 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 configurado en SÍ, aún puede ocultar la barra de estado, pero depende de cada subclase de controlador de vista en su aplicación para anular: prefersStatusBarHidden para devolver SÍ.

Cada vez que su aplicación necesita la apariencia de la barra de estado o la visibilidad para cambiar, y la apariencia de la barra de estado basada en el controlador de vista está configurada en SÍ, su controlador de vista más externo debe llamar:

setNeedsStatusBarAppearanceUpdateAnimation


Pasos para ocultar la barra de estado en iOS 7:

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

2. Y Establecer, Ver el aspecto de la barra de estado basada en el controlador: Booleano NO

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


Probé todas estas opciones publicadas aquí en mi proyecto y no funcionaron. Pensé que podría ser por el hecho de que había actualizado mi Xcode y luego la aplicación para iOS 7 y algunas configuraciones se habían desordenado en algún lugar. Decidí crear un proyecto completamente nuevo para él y después de una simple configuración: "La Status bar is initially hidden = YES " y " View controller-based status bar appearance = NO ", como lo han indicado muchos otros, funcionó correctamente (es decir, no hay barra de estado ).

Por lo tanto, mi consejo si está trabajando en un proyecto que se ha actualizado a iOS 7 desde una versión anterior y ha probado todas las demás opciones es crear un nuevo proyecto.


Pruebe este método simple:

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



Se sugieren tantas combinaciones para este problema, pero el problema es que iOS 6 y 7 utilizan diferentes métodos para ocultar la barra de estado. Nunca he tenido éxito al establecer las configuraciones plist para habilitar el comportamiento de iOS6 en iOS 7, pero si está creando su aplicación para que sea compatible con iOS 6+, debe usar 3 métodos a la vez para garantizar 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 la configuración de plist.


Solo agrega estas 2 líneas en el archivo info.plist. Hará la corrección para iOS7 y versiones anteriores.

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

Navegue hasta el proyecto y seleccione Objetivos -> General y vea la casilla de verificación "Estilo de barra de estado ... Ocultar durante el inicio de la aplicación". Esto funcionará.


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 puedes llamar a esta línea para ocultar la barra de estado:

[[UIApplication sharedApplication] setStatusBarHidden:YES];



-(BOOL)prefersStatusBarHidden { return YES; }


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