最近的項目須要頻繁處理屏幕的旋轉以及各控件的自適應座標。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