まだどこにもないアプリを作る

アプリ開発でつまづいたところなどを中心に記事にして行きます。

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を検知できるってなんかすごいですね