¿Cómo obtengo la barra de navegación en un UINavigationController para actualizar su posición cuando la barra de estado está oculta?

tengo unUINavigationController con una barra de navegación visible. Tengo uno en particularUIViewController que me gustaría ocultar la barra de estado cuando se inserta en la pila de navegación. Una vez que aparece este viewController, me gustaría mostrar la barra de estado nuevamente.

Estoy escondiendo el bar en elviewWillAppear método de miUIViewController Me gusta esto:

- (void) viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    [self.navigationController setWantsFullScreenLayout:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];    
}

Tenga en cuenta que estoy configurandosetWantsFullScreenLayout:YES aquí para mayor claridad, pero en realidad solo estoy configurando esta propiedad en Interface Builder.

El problema: La barra de navegación del NavigationController no se mueve hacia arriba para ocupar el espacio de la barra de estado ahora oculta.

Una solución hacky Lo único que encontré que funcionó para actualizar la posición de la barra de navegación fue ocultarlo y mostrarlo nuevamente, así:

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
[self.navigationController setNavigationBarHidden:YES animated:NO];
[self.navigationController setNavigationBarHidden:NO animated:NO];

pero esto es claramente un truco, tiene que haber una mejor manera.

Otras cosas que probé:

Traté de llamar al[super viewWillAppear] después de ocultar la barra de estado, es decir, al final de mi método.

Intenté setNeedsLayout en navigationController.view así:

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];    
[self.navigationController.view setNeedsLayout];

Pero eso no parece funcionar.

Cualquier ayuda apreciada. Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta