Transición de la animación RootViewController, la orientación inicial es incorrecta

Así que seguí este hilo: RootViewController Switch Transition Animation para transitar el window.rootViewController de A a B a C. El código tiene este aspecto:

[UIView transitionWithView:self.window duration:0.5 options: UIViewAnimationOptionTransitionFlipFromLeft animations:^{ self.window.rootViewController = newViewController; } completion:nil]; 

El problema es que mi aplicación solo admitirá paisajes, pero durante la transición de rootViewController, el nuevo controlador de vista aparece en modo vertical que gira rápidamente al modo horizontal.

Estoy seguro que:

  1. Establecí UISupportedOrientation en horizontal (botón de inicio a la derecha)
  2. para cada viewcontroller, en el método shouldAutoRotateToOrientation, configuré solo para el paisaje

¿Cuál podría ser la otra razón?

Miré esto ahora porque seguía teniendo el mismo problema. Intenté al azar lo siguiente, y funcionó perfectamente:

 [UIView transitionWithView:window duration:0.5 options:UIViewAnimationOptionTransitionCrossDissolve animations:^(void) { BOOL oldState = [UIView areAnimationsEnabled]; [UIView setAnimationsEnabled:NO]; [(ICApp *)sharedApplication.delegate window].rootViewController = self; [UIView setAnimationsEnabled:oldState]; } completion:nil]; 

Sé que es un poco extraño desactivar / activar animaciones dentro de un bloque de animación, pero la cruz se disuelve animando, y la rotación no: el controlador de vista aparece girado y listo para rodar.

Solo UIViewAnimationOptionAllowAnimatedContent otra opción de animación UIViewAnimationOptionAllowAnimatedContent :

 [UIView transitionWithView:self.window duration:0.5 options:(UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionAllowAnimatedContent) animations:^{ self.window.rootViewController = newViewController; } completion:nil];