-
[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
- 하드웨어 기반 디스플레이와 관련된 속성을 정의한 객체
- 픽셀단위에 대한 정보는 여기에 있는 듯 하다(디바이스 크기 등)
## 참고 이미지
반응형'프로그래밍 > iOS' 카테고리의 다른 글
[iPadOS] 가로방향으로 multiple scene이 안될 때 (0) 2021.09.24 [iPadOS] iPadOS에서 multiple scene을 구성하기 (0) 2021.09.22 NSCoding, Codable 사용 방법 정리(코드) (0) 2021.09.20 NSCoding 쓸 때 does not implement methodSignatureForSelector: 에러가 나는 경우 (0) 2021.09.17 [iOS] navigation bar의 large title를 쓸 때 반투명으로 바꾸는 방법 (0) 2021.08.25 - 앱을 실행하고