¿Cómo hacer que la aplicación funcione correctamente para autorrotación en iOS 6?

En iOS6, shouldAutorotateToInterfaceOrientation está en desuso. Traté de usar supportedInterfaceOrientations y shouldAutorotate para hacer que la aplicación funcione correctamente para la autorrotación, pero falló.

este ViewController no quiero rotar, pero no funciona.

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } -(BOOL)shouldAutorotate { return NO; } -(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; } 

¿Algunas ideas? Gracias por cualquier ayuda de antemano!

Lo averigué.

1) UINavigationController subclasificado (el controlador de vista superior de la jerarquía tomará el control de la orientación.) Lo configuró como self.window.rootViewController.

 - (BOOL)shouldAutorotate { return self.topViewController.shouldAutorotate; } - (NSUInteger)supportedInterfaceOrientations { return self.topViewController.supportedInterfaceOrientations; } 

2) si no quieres que el controlador de vista gire

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } -(BOOL)shouldAutorotate { return NO; } -(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; } 

3) si quieres que pueda rotar

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } -(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAllButUpsideDown; } -(BOOL)shouldAutorotate { return YES; } 

Por cierto, de acuerdo a sus necesidades, otro método relacionado:

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

Si está utilizando un Controlador de barra de tabs en lugar de un Controlador de navegación como su controlador raíz, necesitará una subclase similar UITabBarController.

También la syntax será diferente. Usé lo siguiente con éxito. Luego utilicé los ejemplos anteriores con éxito en los controladores de vista que quería anular. En mi caso, quería que la pantalla principal no girara, pero tenía una pantalla de preguntas frecuentes con películas que, naturalmente, quería habilitar la vista horizontal. Funcionó a la perfección! Simplemente tenga en cuenta que la syntax cambia a self.modalViewController (obtendrá una advertencia de comstackción si intenta usar la syntax para un controlador de navegación). ¡Espero que esto ayude!

 - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (BOOL)shouldAutorotate { return self.modalViewController.shouldAutorotate; } - (NSUInteger)supportedInterfaceOrientations { return self.modalViewController.supportedInterfaceOrientations; }