새로운 iPad Pro (2018)의 safeAreaInsets 값이 걱정되어 밤에도 잠을 잘 수 없습니다.

6732 단어 XcodeiOSSwiftiPad

소개





이미지는 iPad Pro - Apple(일본)

2018년 10월 30일에 열린 Apple Special Event에서 새로운 iPad Pro (2018)가 발표되었습니다.
위의 이미지를 볼 수 있듯이 홈 버튼이 사라지고 화면 하단에 Home Indicator이있는 첫 번째 iPad가 등장했습니다.
또한 베젤이 줄어들고 화면 모서리가 둥글다는 것을 알 수 있습니다.
이러한 점에서, 이번 신형 iPad Pro (2018)는 지금까지의 단말에는 없었던 새로운 safeAreaInsets의 값의 패턴을 가지고 있는 것이 아닐까 하고, 신경이 쓰여서 신경이 쓰이고 하루 겨우 8 시간 밖에 잠들지 않았지만, 얼마전에 릴리스된 Xcode 10.1에 신형 iPad Pro (2018)의 Simulator가 추가되어 있었으므로, safeAreaInsets의 값을 검증해 보기로 했습니다.

검증 환경


  • macOS High Sierra 10.13.6
  • Xcode 10.1
  • 시뮬레이터
  • iPad Pro (11-inch) - iOS 12.1
  • iPad Pro (12.9-inch) (3rd generation) - iOS 12.1


  • 검증 방법



    1. 프로젝트 만들기



    신규 프로젝트의 작성으로 「Single View App」템플릿으로부터 1장의 ViewController를 가지는 프로젝트를 작성합니다.

    2. 배경색을 가진 UIView를 SafeArea에 추가



    Main.storyboard를 열고 ViewController의 뷰에 흰색 이외의 배경색을 가진 UIView를 배치하고 아래 그림과 같이 Safe Area (safeAreaLayoutGuide)의 각 Edge (top, bottom, leading, trailing)에 대해 , 배치한 뷰의 각 Edge와의 제약을 추가합니다.



    3. view.safeAreaInsets의 값을 콘솔에 출력



    ViewController.swift를 열고 소스 코드를 다음과 같이 다시 작성합니다. override func viewWillLayoutSubviews()ViewController 의 라이프 사이클 중에서 가장 빨리 view.safeAreaInsets 가 확정하는 타이밍이므로, 이 중에서 출력하도록 하고 있습니다.
    나머지는 실행하고 로그를 확인하여 safeAreaInsets의 값을 알 수 있습니다.

    ViewContoller.swift
    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewWillLayoutSubviews() {
            super.viewWillLayoutSubviews()
    
            // `view.safeAreaInsets`の値を出力
            print(view.safeAreaInsets)
        }
    }
    

    검증 결과



    safeAreaInsets의 값 변화에 대한 검증 결과



    이번 신형 iPad Pro(2018)는 상하좌우 모두 베젤의 폭이 같기 때문에, 화면 회전이나 SlideOver에 의한 화면 분할을 실시해도, safeAreaInsets의 값은 1개의 화면 구성 패턴에 대해서 1개의 패턴만이 된다고 한다 일을 알았습니다.
    또한 iPad Pro (11-inch)iPad Pro (12.9-inch) (3rd generation)에는 safeAreaInsets의 값 차이가 없었습니다.

    화면 구성 패턴별 검증 결과



    ViewController 전용





    출력 결과
    UIEdgeInsets(top: 24.0, left: 0.0, bottom: 20.0, right: 0.0)
    

    NavigationController + ViewController의 경우





    출력 결과
    UIEdgeInsets(top: 74.0, left: 0.0, bottom: 20.0, right: 0.0)
    

    TabBarController + ViewController의 경우





    출력 결과
    UIEdgeInsets(top: 24.0, left: 0.0, bottom: 65.0, right: 0.0)
    

    NavigationController + TabBarController + ViewController의 경우





    출력 결과
    UIEdgeInsets(top: 74.0, left: 0.0, bottom: 65.0, right: 0.0)
    

    마지막으로



    올해 9월에 발표된 iPhone XS, XS Max, XR과 이번 발표된 신형 iPad Pro(2018)의 흐름을 보는 한, 향후 Apple의 새로운 디바이스는 Face ID를 활용한 홈 버튼 없음의 Home Indicator 가지고 있는 디바이스가 점점 늘어나는 것 같습니다.
    따라서 향후 iOS 앱 개발에서는 SafeArea를 고려한 레이아웃과 디자인을 의식하는 것이 필수가 되어 갈 것이라고 생각했습니다.

    이것으로 오늘 밤부터는 푹 자고있을 것 같습니다.
    그럼 여러분, 잘자요.
    끝까지 읽어 주셔서 감사합니다. (잠자리)

    좋은 웹페이지 즐겨찾기