一部のViewControllerだけ端末の回転をさせる方法
注意点
UINavigationControllerにぶら下がっているViewControllerはshouldAutorotate()は呼ばれません。
UINavigationControllerにViewControllerがぶら下がっている場合は、UINavigationControllerのshouldAutorotateが呼ばれてしまう為、ViewController単位で制御できなくなります。
(ぶら下がっていなければ、ViewControllerで呼ばれます。)
やり方紹介にあたっての前提
Portrait, LandscapeLeft, LandscapeRightにチェックをいれています。
UINavigationControllerにViewControllerがぶら下がっていない場合
回転させたいViewController
回転のロジックを埋め込んであげます
// ## hogehogeViewController.swift
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
let orientation: UIInterfaceOrientationMask = [UIInterfaceOrientationMask.Portrait, UIInterfaceOrientationMask.LandscapeRight, UIInterfaceOrientationMask.LandscapeLeft]
return orientation
}
回転させたくないViewController
回転を許容しない設定を埋め込むだけです。
// ## fugafugaViewController.swift
override func shouldAutorotate() -> Bool {
return true
}
これは簡単ですね。
UINavigationControllerにViewControllerがぶら下がっている場合
この場合、UINavigationControllerを拡張して、ぶら下がっているUIViewControllerの設定を取得するようにします。
// ## UINavigationController+Orientation.swift
public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if let _ = self.visibleViewController {
return self.visibleViewController!.supportedInterfaceOrientations()
}
// ViewControllerが無い場合は、縦画面のみ許容します
let orientation: UIInterfaceOrientationMask = [UIInterfaceOrientationMask.Portrait]
return orientation
}
public override func shouldAutorotate() -> Bool {
if let _ = self.visibleViewController {
return self.visibleViewController!.shouldAutorotate()
}
// ViewControllerが無い場合は、回転を許容しません。
return false
}
これで、UINavigationControllerが子のViewControllerの設定を取得するようになったので、回転を許可したいViewControllerで先程と同じような設定を記述します。
// ## hogehogeViewController.swift
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
let orientation: UIInterfaceOrientationMask = [UIInterfaceOrientationMask.Portrait, UIInterfaceOrientationMask.LandscapeRight, UIInterfaceOrientationMask.LandscapeLeft]
return orientation
}
Author And Source
この問題について(一部のViewControllerだけ端末の回転をさせる方法), 我々は、より多くの情報をここで見つけました https://qiita.com/YuwUnknown/items/876f5f1c1734ce6a7651著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .