ios7 - transparente - ocultar barra de estado iphone




Cómo ocultar la barra de estado de iOS (14)

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)
}

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.


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


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".


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 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 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]

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


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.




statusbar