iOS 8: la presentación de un controlador de vista modal en vertical provoca el cambio de tamaño de la barra de navegación del controlador de navegación horizontal subyacente

En iOS 8 tengo un comportamiento extraño con respecto a la barra de navegación y los cambios de orientación.

Tengo un controlador de navegación que informa una orientación de interfaz compatibleUIInterfaceOrientationMaskLandscapeRight. La barra de navegación tiene la altura esperada para la orientación horizontal (lamentablemente no tengo derecho a publicar capturas de pantalla).

Luego inicio una presentación modal de un controlador de vista que solo admiteUIInterfaceOrientationMaskPortrait. Cuando comienza la animación de presentación, parece que las métricas del controlador de navegación subyacente se cambian a una presentación vertical, a medida que la altura de la barra de navegación aumenta a su tamaño vertical, como se muestra arriba.

iOS 7 no exhibe este comportamiento. ¿Qué me estoy perdiendo? Quiero restaurar el viejo comportamiento.

Aquí está el código completo del ejemplo simple anterior:

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];


    DOGButtonViewController *root = [DOGButtonViewController new];
    DOGOrientedNavigationController *navi = [[DOGOrientedNavigationController alloc] initWithRootViewController:root];
    navi.allowedInterfaceOrientations = UIInterfaceOrientationMaskLandscapeRight;

    self.window.rootViewController = navi;

    [self.window makeKeyAndVisible];
    return YES;
}

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortrait;
}

@end


@implementation DOGOrientedNavigationController

- (NSUInteger)supportedInterfaceOrientations
{
    return self.allowedInterfaceOrientations;
}

@end

@implementation DOGButtonViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"Button View Controller";
}

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

- (IBAction)buttonClicked:(id)sender
{
    DOGPortraitViewController *vc = [DOGPortraitViewController new];
    [self presentViewController:vc animated:YES completion:nil];
}

@end

@implementation DOGPortraitViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"Portrait Title";
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

- (IBAction)buttonClicked:(id)sender
{
    [self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

@end

En una configuración más compleja, también experimento el texto en un UIWebView contenido en el controlador de navegación que se amplía al presentar el modal de retrato. Al descartar el modal, el texto no cambia su tamaño a su tamaño original.

Respuestas a la pregunta(1)

Su respuesta a la pregunta