2010-02-02 28 views
6

Quiero mostrar una vista modal y quiero que cubra la barra de estado del iPhone.Hacer desaparecer la barra de estado del iPhone cuando se muestra una vista modal?

Intenté establecer la propiedad wantsFullScreenLayout del controlador de vista modal en YES; También establecí la propiedad de sus padres en SÍ también. Esto no funciona, presumiblemente porque la vista modal se muestra debajo del contenido de la ventana principal, que incluye la barra de estado.

Mi segundo enfoque se redujo toda la técnica "wantsFullScreenLayout" a favor de ocultar la barra de estado justo antes de mostrar la vista modal, a continuación, volver a encenderla después de la vista modal se descartó. Esto funciona hasta el final ... la vista primaria de la vista modal está distribuida incorrectamente (su barra de navegación está parcialmente oculta detrás de la barra de estado). Llamar - [ver setNeedsLayout] no hace nada.

¿Cómo debo abordar este problema?

Gracias.

Respuesta

2

Querrá la - (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated en la clase UIApplication.

Algo como esto:

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES]; 

Eso debe ocultar la barra de estado con una bonita animación de fundido.

+0

Ya lo intenté (ver el segundo enfoque anterior). No tengo problemas para ocultar y reaparecer la barra de estado; el problema es tener el diseño de vista correctamente una vez que lo hago volver a aparecer. Gracias. –

+0

¿Simplemente cambiar el tamaño de la vista? Establecer su marco a (0,20,320,460)? – Jasarien

+0

¡Eso funcionó! Todavía no estoy seguro de por qué tengo que configurarlo manualmente ... ¡pero gracias! –

12

Me uní a la discusión tarde, pero creo que puedo salvar a otros algunos problemas.

Tengo un VC varios impulsos en un NavController (llamemos a ese VC el PADRE). Ahora quiero mostrar una pantalla modal (el NIÑO) con la barra de navegación Y la barra de estado oculta. Después de mucha experimentación, sé que esto funciona ...

1) Como presento el CHILD VC llamando al presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated en el archivo PARENT, la barra de navegación ya no está involucrada (no es necesario ocultarla).

2) La vista en la pluma de CHILD VC tiene un tamaño de 320x480.

3) El NIÑO VC establece self.wantsFullScreenLayout = YES; en viewDidLoad

4) justo antes de la presentación del niño, ocultar la barra de estado con [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:YES];

5) descartar el NIÑO VC usando un métodos de protocolo delegado en el padre, y llame al [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:YES]; antes de dismissModalViewControllerAnimated:YES] para asegurarse de que la barra de navegación está dibujada en la ubicación correcta

Espero que esto ayude.

+0

+1 por 4). Sin embargo, lo resolví sin los otros pasos y visualicé nuevamente la barra de estado en "Ver" Aparecerá: en la vista modal. –

+0

¡Funciona brillantemente para mí! – Chris

+2

con respecto al paso 4, la firma del método es '- (void) setStatusBarHidden: (BOOL) oculto con Animación: (UIStatusBarAnimation) animation'. enviaste el segundo argumento a BOOL en lugar de a UIStatusBarAnimation. –

Cuestiones relacionadas