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
En lista añadir ----
Ver el aspecto de la barra de estado basada en el controlador --- NO
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
(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
write[application setStatusBarHidden:YES];
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
enNO
en .plist y en laapplication: 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];
}
Puede consultar este code , pod UIViewController+ODStatusBar
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];
en el archivo plist de sus aplicaciones, agregue una fila, llámelo "Ver el aspecto de la barra de estado basada en el controlador" y configúrelo en 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
-(BOOL)prefersStatusBarHidden { return YES; }
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
application.statusBarHidden = YES;
return YES;
}