Edited at

デバイス回転の制御

More than 3 years have passed since last update.


背景

画面(ViewController)ごとに回転を制御したいとき、

とりあえず回転する可能性のある方向をすべて指定してから


UISupportedInterfaceOrientations

ViewController

shouldAutoroate, supportedInterfaceOrientations

をオーバーライドして制御する方法しか知らなかった。

あまりスマートじゃないと感じたので別の方法を探してみた。


回転制御方法

以下のようにするとViewControllerごとに回転を制御できるようになる。


ソースコード

https://github.com/bolobob/RotateSample


AppDelegate.swift


func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int {
if window?.rootViewController?.presentedViewController is ViewController2 {
return Int(UIInterfaceOrientationMask.AllButUpsideDown.rawValue)
} else {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}
}


ではUISupportedInterfaceOrientationsって?

UISupportedInterfaceOrientations

によると、アプリを起動するときに取りうる方向を指定しておくものらしい。