停止旋转模态UIViewController

时间:2012-12-14 10:18:31

标签: iphone ios uiviewcontroller modalviewcontroller autorotate

模态UIViewController的父级自动旋转,但是当模态VC启动时,我只希望它以纵向显示而不能旋转。我试过简单地从shouldAutorotate中返回NO ...在模态VC中,但没有快乐。支持iOS 5 +。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:11)

基本上,如果你在 任何容器控制器 (即UINavigationController)上呈现模态控制器,它的自动旋转方法默认返回 YES 。所以你必须为你的UINavigation Controller和Deprecate 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;
}

答案 1 :(得分:0)

这可能是可行的,但在此之前我会三思而行。

作为用户;

  • 我启动应用并在横向上使用。
  • 触发事件(例如,按下按钮)。
  • 查看纵向视图。
  • 旋转手机并以人像查看。
  • 关闭模态视图。
  • 再次获得风景视图。
  • 需要再次旋转手机

糟糕的可用性......

答案 2 :(得分:0)

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