swift iOS デバイスの向きを検知する。.portraitUpsideDown .faceUp .faceDownも感知できる方法
override func viewDidLoad() {
super.viewDidLoad()
//回転感知Observer
NotificationCenter.default.addObserver(self,
selector: #selector(self.rotationChange(notification:)),
name:UIDevice.orientationDidChangeNotification,
object: nil)
}
//MARK: 画面の向きが変わったとき
@objc func rotationChange(notification: NSNotification){
let device = UIDevice.current
switch device.orientation {
case .portrait:
print("portrait")
case .landscapeLeft:
print("landscapeLeft")
case .landscapeRight:
print("landscapeRight")
case .portraitUpsideDown:
print("portraitUpsideDown")
case .faceUp:
print("faceUp")
case .faceDown:
print("faceDown")
default:
print("何")
}
}
.portraitUpsideDown
は逆向きに持ったとき
.faceUp
はテーブルなどに置いてデバイスが表を向いているとき
.faceDown
はテーブルなどに置いてデバイスが裏を向いているとき
を検知できます!
orientation.isPortrait
の方法だとupSideDownでもisPortraitが動いちゃうので
こっちのやり方の方がいいとおもいます。
faceUpを検知できるってなんかすごいですね