Al ocultar la barra de estado, mi barra de navigation se mueve en iOS7.

Estoy tratando de ocultar la barra de estado pero mantengo la altura de la barra de navigation "más grande". En este momento, cuando - (BOOL)prefersStatusBarHidden la barra de estado, establezco - (BOOL)prefersStatusBarHidden a YES y luego llama [self setNeedsStatusBarAppearanceUpdate]; . El problema con esto es que la barra de navigation se deslizará y no dejará espacio para la notificación que bash mostrar. Simplemente agregar una vista sobre la barra de estado no es una opción, nuestra barra de estado / navigation tiene el efecto de desenfoque elegante. ¿Alguien tiene una idea de cómo mantener la altura de la barra de navigation estándar con la altura de la barra de estado y eliminar la barra de estado de eso?

Editar; lo que terminé haciendo es tomar un riesgo y get la UIWindow de la barra de estado a través de una API privada y compensar eso.

Edite 2; La aplicación se aprobó con la API privada. Sin embargo, ¡cuidado!

Puede crear una UIView personalizada con su marco como

 customView.frame=CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height); 

También oculte su barra de estado siguiendo los pasos a continuación.

Vaya a info.plist y agregue dos attributes si no está presente. establezca "Barra de estado inicialmente oculta" en YES y establezca UIViewControllerBasedStatusBarAppearance en NO . Esto ocultará la barra de estado de su aplicación.

Agregue este código en su vista Controlador:

 if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) { self.edgesForExtendedLayout = UIRectEdgeNone; } 

Debe usar of positionForBar: method of UIBarPositioningDelegate Protocol.

No quiero poner otra respuesta o copy / pasado, así que debes echar un vistazo más de cerca a la siguiente pregunta \ respuestas. 🙂

La barra de estado de iOS 7 choca con la barra de navigation
iOS 7 UIToolBar Anulación con barra de estado
barra de estado que se superpone contenido en iOS7

Tuve que hacerlo una vez Terminé creando una barra de navigation personalizada y luego simplemente configuré el marco como:

 navBar.frame=CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height); 

Me funcionó en ese momento. Solo pruébalo.

Otra solución aquí: subclass UINavigationController override method:

 - (void)viewWillLayoutSubviews { [super viewWillLayoutSubviews]; if (self.navigationBar.frameMinY < 1) { self.navigationBar.frameHeight = 64; } else { self.navigationBar.frameHeight = 44; } } 

en el que set frameMinY se establece frame.origin.y y set frameHeight se establece frame.size.height