ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 기기 회전 방향, interfaceOrientation 확인하기 in iOS 13.0
    iOS 2020. 7. 20. 22:28

    핸드폰이 세로 방향 (portrait) 또는 가로 방향으로 (landscape) 회전할 때를 체크하려면 어떻게 해야하는지 알아보겠습니다.

    아직도 구글링을 하면 예전 자료가 나오는데요,

    override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
        coordinator.animate(alongsideTransition: { context in
            if UIApplication.shared.statusBarOrientation.isLandscape {
                // activate landscape changes
            } else {
                // activate portrait changes
            }
        })
    }

    이렇게 하면 

    'statusBarOrientation' was deprecated in iOS 13.0: Use the interfaceOrientation property of the window scene instead.

    라는 warning 을 만나게 됩니다. iOS 13.0 에서부터 SceneDelegate 가 추가되면서 Scene 개념이 도입되었기 때문에 현재 window scene을 이용해서 처리해라! 라는 뜻입니다.

    다음과 같이 처리해주면 됩니다. windows 중에 현재 window에서 interfaceOrientation 을 뽑아서 확인할 수 있습니다.

    switch로 세부적인 왼쪽 가로인지 오른쪽 가로인지, 뒤집힌 세로인지 등등 상태를 세부적으로 처리해줄 수 있습니다.
    단순히 portrait, landscape만 처리하고 싶다면 isPortrait 변수로 처리해줄 수도 있습니다 :)

    override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
            coordinator.animate(alongsideTransition: { context in
                guard let interfaceOrientation = UIApplication.shared.windows.first(where: { $0.isKeyWindow })?.windowScene?.interfaceOrientation else { return }
                
                // 세부적인 처리
                switch interfaceOrientation {
                    case .landscapeLeft:
                    case .landscapeRight:
                    case .portrait:
                    case .portraitUpsideDown:
                    case .unknown
                }
                
                // 단순히 가로 세로 방향만 확인하고 싶을 때
                if interfaceOrientation.isPortrait {
                    print("portrait")
                } else {
                    print("landscape")
                }
            })
        }

     

    감사합니다!

    'iOS' 카테고리의 다른 글

    [개발자 문서읽기] Concurreny Proramming Guide - 1  (0) 2020.08.16
    DispatchQueue  (0) 2020.08.11
    CG, Core Graphics  (0) 2020.07.12
    iOS) 실 기기인지 simulator인지 확인하기 in Swift  (0) 2020.06.10
    #selector 에 parameter 전달하기  (2) 2020.06.04

    댓글

Designed by Tistory.