orientación incorrecta en UIViewController mientras lo anima

Para usar un UISplitViewController, estoy reemplazando mi controlador raíz de ventana cuando navego de un controlador de vista a otro.

Para tener una buena transición al hacerlo, estoy usando un efecto de zoom como este:

MyOtherViewController *controller = [[MyOtherViewController alloc] initWithNibName:@"MyOtherView" bundle:nil];
UIWindow *window = ((MyAppDelegate *)[[UIApplication sharedApplication] delegate]).window;

controller.view.frame = [window frame];
controller.view.transform = CGAffineTransformMakeScale(0.01,0.01);
controller.view.alpha = 0;

[window addSubview:controller.view];

[UIView animateWithDuration:0.2 animations:^{
    controller.view.transform = CGAffineTransformMakeScale(1,1);
    controller.view.alpha = 1.0;
} completion:^(BOOL finished) {
    if (finished) { 
        [self.view removeFromSuperview];
         window.rootViewController = controller;
    }
}];

y esto funciona bastante bien, excepto que mientras se realiza la animación, la nueva vista siempre está orientada como en modo vertical, independientemente de la orientación actual del dispositivo. Cuando finaliza la animación, la vista se orienta correctamente.

¿Qué me estoy perdiendo

Cosas que he probado:

poniendo mi nueva vista de controlador como la única subvista de la UIWindowhaciendo que mi nuevo controlador sea el controlador de vista raíz antes de que comience la animación

Una cosa curiosa es que, si hago una descripción recursiva en la ventana al comienzo de mi método, el marco de la ventana se define como teniendo un tamaño de 768x1024 (es decir, retrato), y la vista dentro de 748x1024 pero con una transformación de [0, -1, 1, 0, 0, 0] (¿esto significa una rotación o qué? ¿No debería ser la transformación de identidad?)

Respuestas a la pregunta(2)

Su respuesta a la pregunta