Decir que un usuario está en un Controlador de Vista y quiere entrar en una «pantalla completa» tipo de modo de la barra de estado está oculto, bajo iOS 6 fue una simple llamada al método para ocultar/mostrar la barra de estado, pero no importa lo que parece persistir en iOS 7.

He visto soluciones como esta:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

Pero que no permite a cambiarse en tiempo de ejecución. (No acepta argumentos.)

En mi info.plist he View controller-based status bar appearance conjunto para NO.

Estoy en la final de ingenio. ¿Cómo puedo esconderlo?

InformationsquelleAutor Doug Smith | 2013-11-04

5 Comentarios

  1. 74

    Swift 4

    mostrar:

    (UIApplication.shared.value(forKey: "statusBarWindow") as? UIWindow)?.isHidden = false

    ocultar:

    (UIApplication.shared.value(forKey: "statusBarWindow") as? UIWindow)?.isHidden = true



    Objective-c

    Bueno, aquí está una manera de hacerlo:

    en myViewController.h

    @interface myViewController : UIViewController {
        BOOL shouldHideStatusBar;
    }

    A continuación, en myViewController.m

    - (void)viewDidLoad {
        [super viewDidLoad];
        shouldHideStatusBar = YES;
    }
    
    - (BOOL)prefersStatusBarHidden {
        return shouldHideStatusBar;
    }

    y digamos que cuando me toque la pantalla debe mostrar la barra de estado ahora. Tendrás que llamar a: setNeedsStatusBarAppearanceUpdate específicamente para conseguir este trabajo y, a continuación, un interruptor (bool en este caso) para mostrar/ocultar.

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        shouldHideStatusBar = (shouldHideStatusBar)? NO: YES;
        [self setNeedsStatusBarAppearanceUpdate];
    }

    setNeedsStatusBarAppearanceUpdate

    Esto debería ser llamado cada vez que los valores de retorno para la vista
    controlador de la barra de estado de atributos han cambiado. Si se llama desde
    dentro de un bloque de animación, los cambios serán animados a lo largo de con el
    resto de la animación bloque.

    prefersStatusBarHidden:

    Valor devuelto Un valor Boolean SÍ especifica la barra de estado debe ser
    ocultas. El valor predeterminado es NO.

    Discusión Si cambia el valor devuelto por este método, llame a la
    setNeedsStatusBarAppearanceUpdate método.

    Para especificar que un niño de controlador de vista debe de control preferido
    barra de estado ocultos/mostrada estado, la implementación de las
    childViewControllerForStatusBarHidden método.


    Si usted planea en su aplicación de trabajo con iOS 6 como bien posible que desee buscar en este post

    • Qué necesito para cambiar la vista de controlador de base de la barra de estado de la línea en mi PLIST?
    • Por qué envolver la llamada a setNeedsStatusBarAppearanceUpdate en un performSelector llamada, y ¿por qué llamar a prefersStatusBarHidden?
    • Si puedo añadir el preferStatusBarHidden método y volver SÍ no tiene ningún efecto en la actualidad.
    • Usted no tiene que hacer nada a su PLIST. No estoy seguro de por qué usted tiene cualquier problema, usted si usted exactamente lo que he hecho aquí funciona 100%. La razón detrás de la performSelector: es porque le permite enviar el mensaje de que no están decididos hasta el tiempo de ejecución. Que a mi entender, perfersStatusBarHidden valor de retorno es un tiempo de ejecución de la función.
    • Gracias por el -1.
    • Usted no necesita llamar a -prefersStatusBarHidden sí mismo, el sistema de llamada que averiguar si es necesario mostrarlo. También no es necesario para envolver cualquier cosa en performSelector debería funcionar bien sin.
    • Para una correcta conmutación de encendido/apagado de la barra de estado en -(void)touchesBegan: withEvent: uso shouldHideStatusBar = (shouldHideStatusBar)? NO: SÍ;
    • Estás en lo correcto, voy a añadir que a mi post.
    • Esto funciona muy bien! Yo estaba teniendo problemas usando la preferrersStatusBarHidden banderas y no era correcta actualización. Me cambié para el uso de banderas así como setNeedsStatusBarAppearanceUpdate y esta solucionado mi problema de actualización.

  2. 3

    Yo estaba teniendo problemas con algunas de las otras respuestas en iOS 8, así que hice una investigación un poco más y encontró: [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];. A continuación, puede activar/desactivar la animación.

  3. 2

    Recomendación

    Para iOS7 apoyo, yo sugeriría que usted gire a la Vista basada en el controlador de la barra de estado aparición de vuelta a SÍ. Esto le permitirá controlar el estado de las barras en el código. IOS guía de transición (enlace) ofrece otras opciones para la gestión de la barra de estado (aspecto que no hay sólo una única solución aquí, pero un número de opciones de configuración que se asegurará de que usted consigue lo que usted desea). También tenga en cuenta que incluso si usted configurar la apariencia en el código que se desea actualizar su storyboards o nib para que coincida con su aspecto predeterminado (de lo contrario puede ver la barra de estado del flash temporalmente dependiendo de donde se establece el código para actualizar la barra de estado). Yo recomendaría que se establece el código antes de la vista aparece.

    Después de establecer su plist de la propiedad para SÍ: Estar seguro de que este método existe en UIViewController donde desea barra de estado para desaparecer:

    - (BOOL)prefersStatusBarHidden
    {
        return YES;
    }

    Mostrar la Barra de Estado

    No volver si desea que la barra de estado aparecen en cada uno de su punto de vista de los controladores.

    No puede ser un número de otros de la barra de estado de asuntos relacionados:

    Enfoque Alternativo

    De acuerdo a la Documentación de Apple se puede utilizar otro método de gestión de la barra de estado mediante el aprovechamiento de la UIApplication método señalado en la referencia abajo (enlace). setStatusBarHidden es todavía viable cuando se utiliza este enfoque.

    En virtud de iOS 7, ¿cómo ocultar y mostrar la barra de estado en la marcha (cuando quiero)

    Esta opción le permitirá continuar con el uso de las propiedades de la clase UIApplication si usted sigue el plist configuración anterior.

    En virtud de iOS 7, ¿cómo ocultar y mostrar la barra de estado en la marcha (cuando quiero)

    Muestras

    Usted puede encontrar ejemplos de código de la barra de estado de la opción alternativa se mencionó anteriormente en:

  4. 0

    Si el controlador de vista que está en la pantalla es la raíz de controlador de vista, a continuación, usted debe ser capaz de implementar la función

    - (BOOL)prefersStatusBarHidden {
        return _showStatusBar;
    }

    con _showStatusBar ser un BOOL, entonces cada vez que cambio de que la propiedad llamada [self setNeedsStatusBarAppearanceUpdate]

    Si el controlador de vista se celebrará dentro de algo más, es decir, un UINavigationController entonces usted necesita para poner en práctica el método - (UIViewController *)childViewControllerForStatusBarHidden en el controlador principal primera y devolver la actualidad presenta controlador de vista de instancia.

    Todo esto es con View controller-based status bar appearance conjunto para YES

  5. -1

    creo que esto va a funcionar bajo la página de resumen de su aplicación o de lo contrario me responda
    En virtud de iOS 7, ¿cómo ocultar y mostrar la barra de estado en la marcha (cuando quiero)

    visibilidad —compruebe que la casilla de

    • Que no me permite cambiar sobre la marcha, como se indica en el post original.
    • Smith se puede añadir este código en el appdelegate self.window.frame =  CGRectMake(0,0,self.window.frame.size.width,self.window.frame.size.height);

Dejar respuesta

Please enter your comment!
Please enter your name here