iOS 6的rotation改变了很多。先来看看官方的描述  http://www.bgr.com/2012/08/06/ios-6-beta-4-change-log-now-available/

知识点:

*UIViewController的shouldAutorotateToInterfaceOrientation方法被deprecated。在ios6里,是使用supportedInterfaceOrientations and shouldAutorotate 2个方法来代替shouldAutorotateToInterfaceOrientation。注意:为了向后兼容iOS 4 and 5,还是需要在你的app里保留shouldAutorotateToInterfaceOrientation。

for ios 4 and 5, 如果没有重写shouldAutorotateToInterfaceOrientation,那么对于iphone来讲,by default是只支持portrait,不能旋转。

for ios 6, 如果没有重写shouldAutorotate and supportedInterfaceOrientations,by default, iphone则是"可以旋转,支持非upside down的方向",而ipad是"可以选择,支持所有方向"

example 1: for ios 4 and 5, iphone device, 若要"可以旋转,支持非upside down的方向",则可以在view controller里

[cpp] view plaincopy
  1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  2. return (interfaceOrientation != UIDeviceOrientationPortraitUpsideDown);
  3. }

example 2: for ios 6, iphone device, 若要“不能旋转,只支持portait",则可以在view controller里

[cpp] view plaincopy
  1. - (BOOL)shouldAutorotate
  2. {
  3. return NO;
  4. }

example 3: for ios 6, ipad device, 若要“可以旋转,只支持landscape",则可以在view controller里

[cpp] view plaincopy
  1. -(NSUInteger)supportedInterfaceOrientations{
  2. return UIInterfaceOrientationMaskLandscape;
  3. }
  4. - (BOOL)shouldAutorotate
  5. {
  6. return YES;
  7. }

* 在iOS 4 and 5,都是由具体的view controller来决定对应的view的orientation设置。而在iOS 6,则是由top-most  controller来决定view的orientation设置。

举个例子:你的app的rootViewController是navigation controller "nav", 在”nav"里的stack依次是:main view -> sub view > sub sub view,而main view里有一个button会present modal view "modal view".

那么for ios 4 and 5,在ipad里,如果你要上述view都仅支持横屏orientation,你需要在上面的main view, sub view, sub sub view, model view里都添加

[cpp] view plaincopy
  1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  2. return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation==UIInterfaceOrientationLandscapeRight);
  3. }

而对于iOS6, 由于是由top-most controller来设置orientation,因此你在main view, sub view, sub sub view里添加下面的代码是没有任何效果的,而应该是在nav controller里添加下列代码。而modal view则不是在nav container里,因此你也需要在modal view里也添加下列代码。

[cpp] view plaincopy
  1. -(NSUInteger)supportedInterfaceOrientations{
  2. return UIInterfaceOrientationMaskLandscape;
  3. }
  4. - (BOOL)shouldAutorotate
  5. {
  6. return YES;
  7. }

注意:

*你需要自定义一个UINavigationController的子类for "nav controller",这样才可以添加上述代码。

* 和navigation controller类似,tab controller里的各个view的orientation设置应该放在tab controller里

for ios6的top-most controller决定orientation设置,导致这样一个问题:在 top-most controller里的views无法拥有不相同的orientation设置。例如:for iphone, 在nav controller里,你有main view, sub view and sub sub view,前2个都只能打竖,而sub sub view是用来播放video,可以打横打竖。那么在ios 4 and 5里可以通过在main view and sub view的shouldAutorotateToInterfaceOrientation里设置只能打竖,而在sub sub view的shouldAutorotateToInterfaceOrientation设置打竖打横即可。而在ios 6里则无法实现这种效果,因为在main view, sub view and sub sub view的orientation设置是无效的,只能够在nav controller里设置。那么你可能想着用下列代码在nav controller里控制哪个view打竖,哪个view打横

[cpp] view plaincopy
  1. -(NSUInteger)supportedInterfaceOrientations{
  2. if([[self topViewController] isKindOfClass:[SubSubView class]])
  3. return UIInterfaceOrientationMaskAllButUpsideDown;
  4. else
  5. return UIInterfaceOrientationMaskPortrait;
  6. }

是的,这样可以使得在main view and sub view里无法打横,而sub sub view横竖都行。但问题来了,如果在sub sub view时打横,然后back to sub view,那么sub view是打横显示的!

目前想到的解决方法只能是把sub sub view脱离nav controller,以modal view方式来显示。这样就可以在modal view里设置打横打竖,而在nav controller里设置只打竖。

* 说了那么多,其实如果你的app的所有view的orientation的设置是统一的,那么你可以简单的在plist file里设置即可,不用添加上面的代码。而如果你添加了上面的代码,就会覆盖plist里orientation的设置。

* in iOS 6, 当view controller present时,不会call willRotateToInterfaceOrientation:duration:, willAnimateRotationToInterfaceOrientation:duration:, and didRotateFromInterfaceOrientation: methods,只有在发生rotate的时候才会call

出处:http://blog.csdn.net/totogogo/article/details/8002173

转载于:https://www.cnblogs.com/goodleixiao/archive/2012/12/19/2824597.html

(转)iOS 6的Rotation--详细版本相关推荐

  1. iOS开发内购详细版本说明

    转自:http://www.jianshu.com/p/c252b2ccb078 一.最近公司很多的项目用到了内购,抽空整理下内购的详细内容吧. 1.先从内购的iTunesConnect里配置说起吧, ...

  2. 苹果状态栏HTML,webview内嵌的html页面,在ios系统上12以上版本和12以下版本状态栏效果不一样...

    详细问题描述 (DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题) [内容] 重现步骤 在vue ...

  3. 计算机二级公共基础知识总结百度云,计算机二级公共基础知识总结详细版本[精]...

    计算机二级公共基础知识总结详细版本[精] (15页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 15.9 积分 全国计算机等级考试二级公共基础知识总结第一 ...

  4. IOS的Alamofire5.4高版本上传图片

    IOS的Alamofire5.4高版本上传图片 Alamofire框架上传图片是比较冷门的知识.经常性报错,也找不到相关解释,或者其他低版本的写法,令开发者很是头疼.低版本的写法,在5.4.4API已 ...

  5. 微软开源 Outlook for iOS 暗黑模式解决方案:支持 iOS 11 及更高版本

    微软于 2019 年 8 月推出了面向 Outlook 的暗黑模式,并于去年初开始对该应用程序展开更广泛的重新设计.在新增的外观和功能中,就包括大家期待已久的暗黑模式.现在,软件巨头已决定将其开源,并 ...

  6. iOS 6的Rotation

    from:http://blog.csdn.net/totogogo/article/details/8002173 iOS 6的rotation改变了很多.先来看看官方的描述  http://www ...

  7. iOS 16 Beta如何降级iOS 15系统?详细图文教程!

    你的iPhone升级到iOS 16 Beta版了吗?最近,不少用户表示升级后遇到了许多问题,想要从iOS 16 Beta降级到iOS 15. 今天,小编就来给大家分享一个iOS 16 Beta完美降级 ...

  8. Java实现根据Word模板填充表格数据(poi方式),以及doc和docx转PDF,最全最详细版本,解决外部引用jar在linux上报ClassNotFound的问题。

    Java实现根据Word模板填充表格数据(poi方式),以及doc和docx转PDF,最全最详细版本,解决外部引用jar在linux上报ClassNotFound的问题. 适用场景: 1.固定格式的W ...

  9. 苹果微信更新不了最新版本_苹果iOS用户更新微信至版本7.0.13,可以进行微信号修改支持一年修改一次...

    今日,微信官方表示,苹果iOS用户更新微信至版本7.0.13,可以进行微信号修改支持一年修改一次,入口位于"我"-"个人信息"-"微信号", ...

最新文章

  1. Python基础06-数据类型:元组tuple
  2. html 文字不可选择,有没有办法在HTML页面上使文本无法选择?
  3. JSF框架在NetBeans下的编码
  4. yii2中的事件和行为
  5. 适用于 deno 的多版本管理工具 dvm 发布
  6. 数据加密类型及创建和申请CA证书
  7. 第四章:Java_面向对象编程(二)
  8. react 引入html文件_React最快速上手教程
  9. Codeforces Round #260 (Div. 1) A - Boredom DP
  10. Mysql优化(出自官方文档) - 第七篇
  11. Normal Equation----machine learning
  12. HDR高动态范围图像处理算法
  13. 使用Cytoscape-BiNGO 对非模式生物做go富集
  14. android控件属性大全
  15. fastai v1环境搭建:Win10 MX250 CUDA10.1 cuDNN Pytorch1.0.0 Fastai v1安(bi)装(keng)指南
  16. 基于强化学习的中间商赚差价指导手册
  17. oracle数据库卷管理,AIX系统逻辑卷管理
  18. 线上抓娃娃机火了三个月了,你玩了吗?
  19. 联想Y50耳机插入耳机孔后没有声音解决办法
  20. 为什么国企要加快推进数字化转型?

热门文章

  1. NIO核心之Channel,Buffer和Selector简介
  2. C语言再学习 -- 详解C++/C 面试题 1
  3. 逻辑回归的总结(详细步骤)
  4. Java数据类型转换(自动转换和强制转换)
  5. 从涂鸦到发布 —— 理解API的设计过程
  6. dvd清洗碟效果好吗_用什么清洗抽油烟机效果比较好?有哪些注意事项?
  7. localdatetime转化为date_为啥你用@JsonFormat注解时,LocalDateTime会反序列化失败?
  8. 取两个数较小值c语言_编程代码:用C语言来实现下雪效果,这个冬天,雪花很美...
  9. 思科模拟器32位_三款另类的68k Mac模拟器
  10. 最短路径问题(Floyd算法)