iOS 6 SDK 中的螢幕自動旋轉有了一些變化,簡單紀錄之。舉例:Master-Detail 類型 App,master ViewController 不支援旋轉螢幕, detail ViewController 支援旋轉螢幕。
在 Info.plist 或 Target-Summary 啟用自動旋轉,選中需要的 Supported Interface Orientations。建立 UINavigationController+Autorotation.h category,根據需要禁用最底層 NavController 的自動旋轉:
1234 |
- (BOOL)shouldAutorotate{ return NO;}
|
在 AppDelegate 設定 window.rootViewController
= navController;
,由於 shouldAutorotateToInterfaceOrientation:
從
iOS 6 起 deprecated,在需要自動旋轉的 viewController 改用 supportedInterfaceOrientations
+preferredInterfaceOrientationForPresentation
。
1234567891011121314 |
- (BOOL)shouldAutorotate{ return YES;}- (NSUInteger)supportedInterfaceOrientations{ return UIInterfaceOrientationMaskAllButUpsideDown;}- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ return UIInterfaceOrientationLandscapeRight;}
|
幾個需要注意的地方:
- window 需要設定 rootViewController,
[window
addSubview:navController.view];
無效;
shouldAutorotate
在最底層設定才有效;
presentModalViewController
下用之前的自動旋轉控制無效,須用
category 解決。
http://fann.im/blog/2012/10/22/autorotation-changes-in-ios-6/