ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iOS] UI 계층 구조 정리
    프로그래밍/iOS 2021. 9. 23. 23:17

    UIScene

    앱의 ui의 하나씩의 instance를 의미함

    • 앱을 실행하고 Debug View Hierarchy 를 실행하면 나오는 계층에서, 맨 위에 있는게 UIWindowScene인데, 이게 사실 UIScene이라고 보면 될 것 같다.
    • 사진처럼 실제로는 이걸 상속한 UIWndowScene 객체를 직접 사용하는듯

    UIWindowScene

    • 이것의 delegate가 SceneDelegate임(UIWindowSceneDelegate)
    • UIScene의 서브 클래스
    • App의 하나 이상의 Window를 관리한다.
    • 직접 만드는 객체가 아님(OS가 생성)

    UIWindowSceneDelegate

    • UISceneDelegate에서 확장된 프로토콜
    • UIWindowScene의 lifcycle 이벤트별로 호출되는 함수를 사용할 수 있음
    • 이 프로토콜이 구현된 객체를 사용해서 1개의 유저 인터페이스의 생명주기를 관리할 수 있음(유저 인터페이스 = 앱?)
    • 여기에 구현된 함수들은 앱이 foreground, backgournd로 들어갈 때 처럼 scene connect, disconnect 될 때 notification을 받아서 호출됨

    UISceneSession

    • 앱의 scene에 대한 정보가 들어있는 객체
    • 단 하나의 UIScene의 lifecycle을 관리하며 유지되고 있는 interface 상태들을 가지고 있음
    • scene들은 이 session을 사용해서 connect & disconnect 된다
    • 직접 만드는 객체가 아님(OS가 생성)

    UIWindow

    • 유저 인터페이스와 이벤트를 발송하는 뷰 사이에 있는 객체(UIView)
    • 어렵게 생각하지말고 구현부만 보면 단순히 UIView의 서브클래스이다
    • 기본적으로 Xcode는 스토리보드를 사용하여 기본 window를 제공하며 이때 스토리보드에서는 Xcode 템플릿이 자동으로 제공하는 app delegate에 window 속성이 있어야 함
    • 만약 앱이 스토리보드를 사용하지 않는다면 반드시 window를 생성해야 한다
    • 계층적으로 부모인(부모클래스X) UIWindowScene을 참조하는데 상향식 참조이므로 weak 하게 참조하고 있는 점을 확인 할 수 있다

    UIScreen

    • 하드웨어 기반 디스플레이와 관련된 속성을 정의한 객체
    • 픽셀단위에 대한 정보는 여기에 있는 듯 하다(디바이스 크기 등)

     

    ## 참고 이미지

    반응형

    댓글

Designed by Tistory.