¿Bloqueo de la orientación vertical en la vista? iOS7

Por lo tanto, quiero bloquear la orientación de mi página de inicio a retrato, y la página de inicio SOLO.

Estoy utilizando un controller de barra de tabs, por lo que la vista inicial es el controller de tabs, pero el controller de vista que aparece primero es la primera pestaña, por ejemplo, la página de inicio.

Me gustaría hacerlo para que cuando el usuario vaya a rotar el dispositivo, NO rotará al paisaje en esta página. Sin embargo, todas las demás páginas pueden rotar.

He buscado alnetworkingedor, y nada parece ser específico para iOS 7, y el que es específico para iOS 7 no funciona …

¡Por favor ayuda, gracias!

La image a continuación describe lo que NO QUIERO pasar, para esta página.

introduzca la descripción de la imagen aquí

Implemente lo siguiente en su implementación

- (NSUInteger) supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; } 

¡Esto debería darle los resultados que está buscando!

Use este codigo

 @implementation UINavigationController (Rotation_IOS6) -(BOOL)shouldAutorotate { return UIInterfaceOrientationMaskPortrait; } -(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; } - (UIInterfaceOrientation)prefernetworkingInterfaceOrientationForPresentation { return UIInterfaceOrientationPortrait; } @end 

El problema es, como has señalado correctamente, que tu pestaña de inicio no es el controller de vista superior.

Por mi conocimiento limitado sobre el tema, solo puedo pensar en lo siguiente:

  1. Cree otro controller de vista de pestaña e implemente los methods para controlar la orientación, es decir, shouldAutorotate y shouldAutorotate ;
  2. Haga que este controller sea el primero al inicio;
  3. Dirija las otras tabs hacia abajo al controller de tabs original (el que admite todas las orientaciones) utilizando un segue de inserción.

Creo que encontré una buena solución. Bueno, en mi caso estoy usando un UISplitViewController como rootController en el storyboard, pero la idea es la misma.

  1. Subclass su RootController (en mi caso UISplitViewController) y capture la callback shouldAutorotate () para que pueda llamar a las subidas debería autorizar desde allí.
  2. Implementar shouldAutorotate () en la vista en la que desea bloquear la rotation

     class MyUISplitViewController: UISplitViewController { override func shouldAutorotate() -> Bool { if ((self.viewControllers.last) != nil && (self.viewControllers.last!.topViewController) != nil){ if (self.viewControllers.last!.topViewController!.respondsToSelector("shouldAutorotate")) { return self.viewControllers.last!.topViewController!.shouldAutorotate() } } return true } } 

En su sub UIViewController

 override func shouldAutorotate() -> Bool { if (UIDevice.currentDevice().userInterfaceIdiom == .Phone) { return false }else{ return true } } 

Si desea verificar las orientaciones compatibles, simplemente puede hacer lo mismo con support support supported InterfaceOrientations ()

EDITAR:

No olvide configurar su class "MyUISplitViewController" en la vista de raíz del StoryboardController