iOS 6.0旋轉兼容的那點事

這兩天問答系統裏,問ios橫豎屏切換、還有狀態欄旋轉的問題有點多,來些當心得,但願遇到的人少走彎路;

先貼官方說明:
iOS 6.0 Release Notes:
Autorotation is changing in iOS 6. In iOS 6, the shouldAutorotateToInterfaceOrientation: method 
of UIViewController is deprecated.In its place, you should use the supportedInterfaceOrientationsForWindow: 
and shouldAutorotate methods.

在iOS 6.0以前咱們都是使用shouldAutorotateToInterfaceOrientation方法來控制視圖、狀態欄的旋轉,可是iOS 6.0及之後
就要使用supportedInterfaceOrientations方法來控制旋轉了;

因此向iOS 6.0兼容的須要手動添加supportedInterfaceOrientations 方法,來控制視圖和
狀態欄的旋轉,還有兩點須要說明:

一、在iOS 6.0以前,控制旋轉的代碼,無需和plist的中的Supported interface orientations一一對應,舉個例子:
plist的Supported interface orientations選項中支持,Portrait(bottom home button)、Landscape(right home button),無Landscape(left home button)
方法shouldAutorotateToInterfaceOrientation中強制支持UIInterfaceOrientationLandscapeLeft編譯執行沒有任何問題,
可是在iOS 6.0中,若是在supportedInterfaceOrientations中添加UIInterfaceOrientationMaskLandscapeLeft編譯正常,
運行過程當中,左旋轉程序就會異常退出;因此程序支持旋轉的,代碼與plist必定要保持一致;

二、在Xcode 4.5以前旋轉支持的是
UIInterfaceOrientationLandscapeLeft  
 UIInterfaceOrientationLandscapeRight
UIInterfaceOrientationPortrait              
 UIInterfaceOrientationPortraitUpsideDown

而Xcode 4.5 GM Seed及Xcode 4.5.1旋轉支持的是(多了個All,還有Mask的修飾,Xcode 4.5以前是不識別的)
UIInterfaceOrientationMaskAll       UIInterfaceOrientationMaskLandscapeLeft UIInterfaceOrientationMaskLandscapeRight         UIInterfaceOrientationMaskPortrait UIInterfaceOrientationMaskPortraitUpsideDown
相關文章
相關標籤/搜索