【原】兼容IOS6以及旧版本的旋转处理方法,心得总结

最近的项目须要频繁处理屏幕的旋转以及各控件的自适应坐标。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

这个简单不少,没有上面的硬性条件,只须要在须要旋转的viewController里面重写 shouldAutorotateToInterfaceOrientation 方法就行
 
还有其余一些注意事项,能够参考:
相关文章
相关标签/搜索