iOS 8与iOS 7 Autorotation

时间:2014-08-08 15:01:14

标签: uiviewcontroller ios8 ios7.1 uiwindow auto-rotation

这是一个简单的单一视图控制器应用程序:

    - (void)viewDidLoad
    {
      [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

      self.view.backgroundColor = [UIColor greenColor];
     }


    - (BOOL)shouldAutorotate
    {
       return YES;
    }

    - (NSUInteger)supportedInterfaceOrientations
   {
        return UIInterfaceOrientationMaskLandscapeRight;
   }

iOS 8中的输出差异很大。

iOS 8 output

iOS 7 output

这与iOS 8与iOS 7上的UIWindow界限有什么关系。我如何获得iOS 7的行为?

2 个答案:

答案 0 :(得分:0)

这似乎是Xcode 6或iOS 8中的一个错误。从xib切换到故事板后,问题就消失了。

答案 1 :(得分:-1)

在IOS8中,可能的方向列表应该在Info.plist文件中,方法shouldAutorotate默认返回YES。

查看下面的讨论和文档:

https://stackoverflow.com/a/24467576/3330421

UIKit参考: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/supportedInterfaceOrientations

  

当用户更改设备方向时,系统会调用此方法   根视图控制器或最顶层呈现视图上的方法   填充窗口的控制器。如果视图控制器支持   新的方向,窗口和视图控制器旋转到新的   取向。仅在视图控制器中调用此方法   shouldAutorotate方法返回YES。

     

重写此方法以报告视图的所有方向   控制器支持。视图控制器的默认值   支持的接口方向设置为   UIInterfaceOrientationMaskAll用于iPad的习语和   用于iPhone习语的UIInterfaceOrientationMaskAllButUpsideDown。

     

系统与视图控制器支持的方向相交   使用应用程序支持的方向(由Info.plist确定   文件或应用代表   application:supportedInterfaceOrientationsForWindow:method)to   确定是否旋转。