停止旋转的模态UIViewController

模态UIViewController的父级自动旋转,但是当模态VC启动时,我只希望它出现在肖像中,而不是可旋转的。 我已经试图简单地从模式VC中的shouldAutorotate返回NO,但是没有快乐。 支持iOS 5+。

任何帮助不胜感激。

基本上,如果您在任何容器控制器 (即UINavigationController)上呈现模态控制器,则默认情况下自动旋转方法返回YES 。 所以你必须为你的UINavigation Controller创build子类并在那里弃用Autorotation。

对于iOS 5使用方法:

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { return (toInterfaceOrientation == UIInterfaceOrientationPortrait) : self.enableRotations; } 

对于iOS 6:

 - (NSUInteger)supportedInterfaceOrientations { switch ([UIDevice currentDevice].userInterfaceIdiom) { case UIUserInterfaceIdiomPad: return UIInterfaceOrientationMaskAll; case UIUserInterfaceIdiomPhone: return UIInterfaceOrientationMaskPortrait; } } - (BOOL)shouldAutorotate { return NO; } 

这是可行的,但在这之前我会考虑三次。

作为用户

  • 我启动应用程序,并在景观中使用。
  • 触发事件(例如按下button)。
  • 看到一个是肖像的视图。
  • 旋转手机,看看肖像。
  • closures模态视图。
  • 再次获得景观视图。
  • 需要再次旋转手机

糟糕的可用性…

你必须在新的导航控制器上显示这个新的控制器。这将解决你的问题