Orientación de la interfaz en iOS 6.0

Cómo usar los siguientes methods para admitir la orientación de la interfaz en iOS 6.0:

shouldAutorotate supportedInterfaceOrientations prefernetworkingInterfaceOrientationForPresentation 

Como "shouldAutorotateToInterfaceOrientation" está en desuso en iOS 6.0.

Proporcione fragments de código para respaldar sus respuestas.

Gracias.

Método en desuso en iOS 5:

 // Override to allow orientations other than the default portrait orientation. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); } 

Reemploop en iOS 6 y equivalente de este método desaprobado de iOS 5 anterior:

 - (BOOL) shouldAutorotate { return YES; } -(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscapeRight; } 

Espero que esto ayude.


[editar n. ° 1: se agregó mi UIViewController que se inicia con éxito en el modo vertical en XCode 4.5 en el simulador de iPhone 6.0]

 #import "FirstViewController.h" @interface FirstViewController () @end @implementation FirstViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } -(BOOL)shouldAutorotate { return NO; } -(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAll; } - (UIInterfaceOrientation)prefernetworkingInterfaceOrientationForPresentation { return UIInterfaceOrientationMaskPortrait; } 

[#edit 2: Ejemplo de código de la aplicación horizontal única que admite iOS 5 e iOS 6]

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationLandscapeRight) || (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); } - (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } - (UIInterfaceOrientation)prefernetworkingInterfaceOrientationForPresentation { return UIInterfaceOrientationLandscapeLeft; } 

Por cierto, su configuration en la configuration de su proyecto Xcode ahora tiene prioridad. Asegúrese de configurar correctamente la matriz "Orientaciones de interfaz admitidas" en la configuration de su proyecto. Ese fue el problema para mí. Eliminé los no deseados y mi aplicación funcionó como lo hizo cuando compilé con Xcode 4.4.1

Mi aplicación tiene una instancia de una subclass UINavigationController personalizada, que presenta varios controlleres de vista, todo en modo vertical, excepto cuando se reproduce un video, en cuyo caso también quiero permitir ambas orientaciones de paisaje.

Basado en la respuesta de @uerceg, este es mi código.

Primero, habilité Portrait, Landscape Left y Landscape a la derecha en Xcode -> Target -> Summary.

En la implementación de la subclass UINavigationController, yo #import 'ed <MediaPlayer/MediaPlayer.h> .

Luego implementé estos methods:

 // Autorotation (iOS <= 5.x) - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { if ([self modalViewController] && [[self modalViewController] isKindOfClass:[MPMoviePlayerController class]]) { // Playing Video: Anything but 'Portrait (Upside down)' is OK return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } else{ // NOT Playing Video: Only 'Portrait' is OK return (interfaceOrientation == UIInterfaceOrientationPortrait); } } // Autorotation (iOS >= 6.0) - (BOOL) shouldAutorotate { return YES; } -(NSUInteger)supportedInterfaceOrientations { NSUInteger orientations = UIInterfaceOrientationMaskPortrait; if ([self modalViewController] && [[self modalViewController] isKindOfClass:[MPMoviePlayerController class]]) { // Playing Video, additionally allow both landscape orientations: orientations |= UIInterfaceOrientationMaskLandscapeLeft; orientations |= UIInterfaceOrientationMaskLandscapeRight; } return orientations; } 

El código de NiqueuesMiari funcionó para mí. Un giro diferente tuve un UITabBarController que presentó UINavigationControllers y estaba usando StoryBoards. La implementación de la subclass UITabBarController es exactamente la misma y ser paciente con la selección de class para el controller de barra de tabs en Story Boards. No está disponible inmediatamente después de la construcción.

https://devforums.apple.com/thread/165384?tstart=0

https://devforums.apple.com/thread/166544?tstart=0

Hay una serie de ejemplos y sugerencias en los subprocesss anteriores relacionados con los cambios de orientación de la interfaz de soporte en iOS6, los dos subprocesss relacionados con problemas con las vistas del centro de juegos, pero deberían ser suficientes para comenzar.

También debe verificar las notas de la versión de iOS6 en UIKit, desafortunadamente no puedo darle un enlace directo, ya que soy nuevo.

Evitar publicar código aquí debido a NDA

Espero que ayude