螢幕的轉向
要設定app支援的轉向,有兩個要素。分別是”裝置”與”View Controller”。兩者設定的交集,才是真正最後能呈現的轉向。
裝置支援的方向
要設定裝置所支援的方向,只要在專案Device Orientation勾選要支援的方向。
其所修改後,其實是對應到Info.plist中,Supported interface orientations的設定。
View Controller 支援的方向
View Controller以呈現類型,大致上有三種。分別是UINavigationController, UITabBarController與的UIViewController。
- UINavigationController
若以UINavigationController管理多個UIViewController,則以UINavigationController統一管理支援的方向。
- UITabBarController
若以UITabBarController管理多個UIViewController,則以UITabBarController統一管理支援的方向。
- UIViewController
單獨的UIViewController則自己處理支援的方向。若前面UINavigationController或UITabBarController以presentViewController方式呈獻UIViewController,則此UIViewController不受UINavigationController或UITabBarController所管理。
從iOS 7到目前的iOS9有兩個method要去實作,分別表示
- shouldAutorotate() -> Bool :表示是否支援轉向
- supportedInterfaceOrientations() -> UIInterfaceOrientationMask :列出所支援的轉向
說明
若裝置支援的方向勾選Portrait, Landscape Left, Landscape Right。用如下支援轉向的method寫在不同地方做說明。
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return [.Portrait]
}
- 使用UINavigationController,但支援轉向的method寫在其中的一個UIViewController中。進行轉向的結果如下。可以看出已被轉向。表示method限制只支援Portrait的設定無作用。