最近的项目须要频繁处理屏幕的旋转以及各控件的自适应坐标。IOS6出来以后,屏幕旋转的处理方法变得复杂不少。在查阅了不少资料以及动手测试以后,得出如下几点精简的体会:测试
对于IOS6.0以上版本:spa
1.若是想让全部的ViewController的旋转控制方式统一,则只须要在RootViewController里面重载shouldAutorotate 以及 supportedInterfaceOrientations 方法。通常的RootViewController都为UINavigationViewController或者UITabbarViewController。 问题来了:Navi以及Tab控制器都是系统自带的,如何添加上述两个方法呢?本身继承一个Navi或者Tab控制器的子类,而后让这个子类:self.window.rootViewController = myNaviCtrl;.net
2.若是想让其中的一些ViewController本身有本身的旋转控制方式,则应该在上述本身继承的Navi或者Tab控制器里作以下处理:code
1 - (BOOL)shouldAutorotate 2 { 3 return self.topViewController.shouldAutorotate; 4 } 5 6 - (NSUInteger)supportedInterfaceOrientations 7 { 8 return self.topViewController.supportedInterfaceOrientations; 9 }
而后在每一个ViewController里面本身重载上述两个方法,设置本身的方向值。blog
3.同理,若是在你的delegate里面,self.window.rootViewController = viewCtrl,而不是navCtrl,那么上面的那2个控制旋转的方法就应该写在UIViewController里面!继承
IOS4/ 5:get