关于iOS屏幕旋转的一些注意事项

  

  

最近有个需求,是在应用程序中有一个查看文件的页面,由于查看文件横屏会更方便阅读,所以老板说要让这个页面可以横屏。之前都没有接触过横屏的具体实现方法,一开始走了不少弯的路,而且各种错误。在这里把遇到的问题分享一下,希望对大家有点帮助。

  

<>强要让你的应用支持旋转,你需要进行如下几个步骤

  

  

在工程<代码>→目标→→将军部署信息>   

关于iOS屏幕旋转的一些注意事项“> <br/>
  </p>
  <p>在AppDelegate中配置<br/>
  </p>
  
  <pre类=   ——(UIInterfaceOrientationMask)应用程序:UIApplication(*)应用supportedInterfaceOrientationsForWindow: (ui窗口*)窗口   {   返回UIInterfaceOrientationMaskAllButUpsideDown;   }      

  

我们需要在什么地方实现控制器的旋转方法呢?

  

<强>有以下两种情况

  

1,当前控制器是窗口的rootViewController由rootViewController来管理旋转的相关方法
  

  

典型的有UINavigationController, UITableBarController
  

  

2,当前控制器是模态模式的时(控制器为模态显示的控制器),由该控制器自己管理旋转的相关方法
  

  

即控制器是通过<代码> presentViewController:动画:完成>   

  

<>强控制器的旋转方法介绍

  

控制器的旋转方法在iOS6之前和之后有了比较大的变化

  

1,在iOS6之前只需要实现下面这个方法就可以
  

        (保龄球)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {   返回(interfaceOrientation==UIInterfaceOrientationLandscapeLeft | | interfaceOrientation==UIInterfaceOrientationLandscapeRight);   }      

2,在iOS6之后由下面两个方法替代
  

     //是否支持旋转   (保龄球)shouldAutorotate {   返回YES;   }//所支持的方法集合,是一个枚举类   ——(了NSUInteger) supportedInterfaceOrientations {   返回UIInterfaceOrientationMaskLandscape;   }      

下面我重点讲一下在iOS6之后旋转方法的使用情况。因为在iOS6 + 7 8中和iOS9中这两个方法的调用顺序以及处理逻辑是不一样的(坑)
  

  

  

1 iOS6 + 7 8中会先调用shouldAutorotate判断屏幕是否支持旋转

  
      <李>该方法返回是的,就会去调用supportedInterfaceOrientations检查控制器支持的方向枚举集合,如果存在符合设备所处的方向枚举集合,屏幕会执行相应的旋转,如果不存在设备所处的方向枚举,屏幕就不会旋转,停止检查
      李   <李>该方法返回不,屏幕不能够旋转,停止检查
      李   
  

2, iOS9 +中会先调用supportedInterfaceOrientations来检查控制器支持的方向枚举集合
  

  
      <李>如果方向枚举集合中没有符合设备所处的方向枚举,就不会去调用shouldAutorotate方法,屏幕不会旋转,停止检查
      李   <李>如果方向枚举集合中有符合设备所处的方向枚举,那么就会去调用shouldAutorotate方法
      李   
  

,,,,,,,,,,,,如果该返回是的,屏幕执行相应的旋转
  

  

,,,,,,,,,,,,如果该返回不,屏幕不会旋转,停止检查
  

  

3,关于preferredInterfaceOrientationForPresentation方法,该方法的作用是返回最优先显示的屏幕方向。在iOS7之后就不会调用了,但是网上说在iOS7之前需要加上,不加会崩溃(没有亲测)
  

  

  

写这边文章主要是因为之前在网上看了很多资料,但是并有提到旋转方法他们的调用顺序以及处理逻辑的介绍,大部分都是抄来抄去,没有经过自己试验的代码也贴到网上来,坑了我千万遍。

  

以上就是这篇文章的全部内容了,希望本文的内容对各位Android开发者们能有一定的帮助,亲身试验的东西才是硬道理,如果有疑问大家可以留言交流。

关于iOS屏幕旋转的一些注意事项