Habilitar / deshabilitar statusBar por vista en iPhone (problema de 20 px)

Solo quiero habilitar / deshabilitar la barra de estado por controller de vista (algunos ver pantalla completa, otros no)

He estado varias veces a través de todas las publicaciones relacionadas con la barra de estado de 20 píxeles , pero aún tengo el problema, especialmente en iOS5.0 (algún truco funcionó en una versión anterior de iOS):

Aquí está la definición del problema:

  • Uso [[UIApplication shanetworkingApplication] setStatusBarHidden:YES] para ocultar la barra de estado

  • Siempre tengo el área vacía blanca de 20 píxeles si hago esto

  • Intento habilitar / deshabilitar la barra de navigation para forzar un layout, esto no funciona en iOS 5:

     [self.navigationController setNavigationBarHidden:NO animated:NO]; [self.navigationController setNavigationBarHidden:YES animated:NO]; 
  • He intentado restablecer manualmente el tamaño del marco de vista, sin cambios.

    self.view.frame=CGRectMake(0, 0, 320, 480);

  • He intentado cambiar manualmente la vista del contenedor de navigation:

    self.navigationController.frame=CGRectMake(0, 0, 320, 480);

  • Todas las vistas son, por supuesto, 480 píxeles de altura.

Use el siguiente método en viewWillAppear of view controller al que le gustaría mostrar StatusBar.

 [[UIApplication shanetworkingApplication]setStatusBarHidden:YES]; 

Declare una variable BOOL para indicar si la barra de estado está oculta o no mientras la vista está cargada en el controller de vista, por lo que le gustaría ocultar la barra de estado y establecer su valor en NO.

 BOOL statusBarHidden = NO; 

A continuación, agregue el siguiente código en viewWillAppear of view controller (la barra de estado está oculta en esta vista)

 [[UIApplication shanetworkingApplication] setStatusBarHidden:YES]; if(statusBarHidden == NO) { self.navigationController.navigationBar.frame = CGRectOffset(self.navigationController.navigationBar.frame, 0.0, -20.0); statusBarHidden = YES; } 

Creo que quieres esconder la barra de estado y configurar los ViewControllers en pantalla completa con la barra de navigation y luego usar

 [self.navigationController.view setNeedsLayout]; 

otro método de uso en que desea ocultar estado Bar …

 [[UIApplication shanetworkingApplication]setStatusBarHidden:YES withAnimation:NO]; [self wantsFullScreenLayout];