最近的项目需要频繁处理屏幕的旋转以及各控件的自适应坐标。IOS6出来之后,屏幕旋转的处理方法变得复杂很多。在查阅了很多资料以及动手测试之后,得出以下几点精简的体会:

对于IOS6.0以上版本:

1.如果想让所有的ViewController的旋转控制方式统一,则只需要在RootViewController里面重载shouldAutorotate 以及 supportedInterfaceOrientations 方法。一般的RootViewController都为UINavigationViewController或者UITabbarViewController。  问题来了:Navi以及Tab控制器都是系统自带的,如何添加上述两个方法呢?自己继承一个Navi或者Tab控制器的子类,然后让这个子类:self.window.rootViewController = myNaviCtrl;

2.如果想让其中的一些ViewController自己有自己的旋转控制方式,则应该在上述自己继承的Navi或者Tab控制器里做如下处理:

 - (BOOL)shouldAutorotate
{
return self.topViewController.shouldAutorotate;
} - (NSUInteger)supportedInterfaceOrientations
{
return self.topViewController.supportedInterfaceOrientations;
}

然后在每个ViewController里面自己重载上述两个方法,设置自己的方向值。

3.同理,如果在你的delegate里面,self.window.rootViewController = viewCtrl,而不是navCtrl,那么上面的那2个控制旋转的方法就应该写在UIViewController里面!

IOS4/ 5:

这个简单很多,没有上面的硬性条件,只需要在需要旋转的viewController里面重写 shouldAutorotateToInterfaceOrientation 方法就行
 
还有其他一些注意事项,可以参考:

【原】兼容IOS6以及旧版本的旋转处理方法,心得总结的更多相关文章

  1. IOS:兼容ios6和低版本

    viewDidUnload在ios6开始被弃用了,所以我们在这里处理内存警告的这类问题,这个时候我们就要把相应的处理放在 didReceiveMemoryWarning中. - (void)didRe ...

  2. IOS6屏幕旋转详解(自动旋转、手动旋转、兼容IOS6之前系统)

    转自 http://blog.csdn.net/zzfsuiye/article/details/8251060 概述: 在iOS6之前的版本中,通常使用 shouldAutorotateToInte ...

  3. 【原】webapp开发中兼容Android4.0以下版本的css hack

    话说现在的手机型号越来越多,主要还是android和ios这2个巨头称霸了江湖,而他们自带的浏览器内核是webkit,那对于做移动网页开发的同事来说,一般只要做好webkit内核浏览器的展现效果就行了 ...

  4. Bootstrap 4/3 页面基础模板 与 兼容旧版本浏览器

    Bootstrap 3 与 4 差别很大,目录文件结构.所引入的内容也不同,这里说说一下 Bootstrap 引入的文件.网页模板和兼容性问题.本网站刚刚搭建好,正好发一下文章原来测试网站. Boot ...

  5. J20航模遥控器开源项目系列教程(七)PPM输出 | 关于按键版本和旋转编码器版本的兼容说明、布局建议 | 关于MINI版PCB的兼容说明

    我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/J ...

  6. 利用 Charles Proxy 下载旧版本 iOS App

    一.软件准备 1.旧版本 iTunes1.IPSW Downloads:https://ipsw.me/2.百度网盘链接: https://pan.baidu.com/s/1PO9Z12o-rqZ_J ...

  7. 让旧版本的 Flash IDE 支持更新的 Flash Player/AIR 功能

    转载:https://blog.zengrong.net/post/1568.html 让旧版本的 Flash IDE 支持更新的 Flash Player/AIR 功能 今天在论坛上看到一篇文章:H ...

  8. 一个diff工具,用于判断两个目录下所有的改动(比较新旧版本文件夹)

    需求: 编写一个diff工具,用于判断两个目录下所有的改动 详细介绍: 有A和B两个目录,目录所在位置及层级均不确定 需要以B为基准找出两个目录中所有有改动的文件(文件或内容增加.修改.删除),将有改 ...

  9. Android技巧小结之新旧版本Notification

    最近开发用到了通知功能,但有几个地方老是提示deprecated,然后就找了篇文章学习了下新旧版本的不同. Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API leve ...

随机推荐

  1. 编写高质量JS代码的68个有效方法(十二)

    No.56.避免不必要的状态 Tips: 尽可能地使用无状态的API 如果API是有状态的,标示出每个操作与哪些状态有关联 无状态的API简洁,更容易学习和使用,也不需要考虑其他的状态.如: 'tes ...

  2. Pass云Docker介绍

    1.Docker 简介 Docker是一个开源可以将任何应用包装在”LXC容器”中运行的工具.如果说VMware,KVM包装的虚拟机,Docker包装的是应用.是一个实至名归的PaaS. 当应用被打包 ...

  3. 15套帮助你展示 App 设计的透视屏幕原型素材

    Dribbble 和 Behance 是最好两个展示你的设计作品的地方.现在流行使用透视屏幕来展示应用程序设计效果,尤其是在 Dribbble 上面,有众多高品质的免费资源和设计素材. 这篇文章汇集了 ...

  4. TOGAF培训讲义

    我作为国内首先进行TOGAF研究和实践的架构师之一,曾在中国软件技术大会和中国软件工程大会做过TOGAF相关的主题演讲,并在多家大中型企业做过企 业架构内训.这个是我在给需要企业架构的企业做内训时的讲 ...

  5. Android学习笔记之ExecutorService线程池的应用....

    PS:转眼间就开学了...都不知道这个假期到底是怎么过去的.... 学习内容: ExecutorService线程池的应用... 1.如何创建线程池... 2.调用线程池的方法,获取线程执行完毕后的结 ...

  6. 【团队冲刺总结】一个编码人员的反(tu)思(cao)

    消失了半个多月了啊,算算时间,好像确实有近个把月没有好好的写博客来了.我一直很想写博客的,之前有老师问过写博客的动力是什么.我想了想,我觉得可能是我比较喜欢看书吧,不管是专业书还是小说(好吧,我承认, ...

  7. linux中$与()的一点使用疑惑解释

    a=$(cat 1.sh)等价于a=`cat 1.sh` 而a=(cat 1.sh) 相当于定义一个a数组,内容为cat 1.sha=(`cat 1.sh`)相当于把1.sh里面的内容当成a的数组,a ...

  8. [Solution] 1分钟使用log4net

    log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具 官网:http://logging.a ...

  9. DOM中 property 和 attribute 详解

    被问到 property 和 attribute 的区别,想来也是要好好看一下. 一.基本概念区别 其实Attribute和Property这两个单词,翻译出来都是“属性”,<js高级程序设计& ...

  10. 投票系统 & 简易js刷票脚本

    早就听说有什么刷票脚本,微博投票等等相关的投票都有某些人去刷票. 试一下吧,兴许自己也会刷票呢?捣鼓了几个小时,终于有所眉目. (1)投票系统 要刷票,就得先有个投票界面. 当然,可以直接去各个投票网 ...