orientação incorreta no UIViewController enquanto a anima

Para usar um UISplitViewController, estou substituindo meu controlador raiz da janela ao navegar de um controlador de exibição para outro.

Para ter uma boa transição ao fazer isso, estou usando um efeito 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;
    }
}];

e isso funciona muito bem, exceto que durante a animação, a nova exibição é sempre orientada como se estivesse no modo retrato, independentemente da orientação atual do dispositivo. Quando a animação termina, a exibição é orientada corretamente.

o que estou perdendo?

Coisas que tentei:

colocando minha nova visualização do controlador como a única sub-visualização do UIWindowtornando meu novo controlador o controlador de visualização raiz antes do início da animação

O curioso é que, se eu fizer uma descrição recursiva na janela no início do meu método, o quadro da janela é definido como tendo um tamanho de 768x1024 (ou seja, retrato) e a visualização dentro de 748x1024, mas com uma transformação de [0, -1, 1, 0, 0, 0] (isso significa uma rotação ou o quê? Não deveria ser a identidade transformada?)

questionAnswers(2)

yourAnswerToTheQuestion