티스토리 뷰
iOS13부터 멀티 윈도우가 가능해지면서
UI Structure에 UIWindowScene이라는 개념이 등장했습니다.
UISceneSession이라는 개념도 함께요..!!
그럼 UIScene, UIWindowScene, UISceneSession에 대해 간단히 살펴보겠습니다
[1] UIScene
- 앱 UI의 하나의 instance 또는 복사본을 의미합니다.
- 아래와 같은 상황에서는 세개의 scene이 있다 라고 말할 수 있습니다.
- 특정한 session과 connection 정보들로 Scene을 만듭니다.
- UISceneDelegate를 이용하여 Scene의 life-cycle events을 매니징할 수 있습니다. UISceneDelegate에는 아래와 같은 라이프사이클 관련 함수들이 있습니다.
[2] UIWindowScene
- UIScene의 서브클래스로 앱의 하나 이상의 윈도우를 관리합니다.
- 직접 windowScene을 만들지 말라고 합니다. 대신에 configuration time에 너가 원하는 UIWindowScene에 대해서 명시해주라고 합니다. 그 방법으로는 info.plist의 scene configuration details 관련된 부분에 너가 원하는 UIWindowScene의 클래스 네임을 넣어두면 된다고 합니다.
뭔가 이쯤에 넣어둬야할 feel인데 좀 더 찾아보겠습니다.
- 이 그림답게(??) windows와 screen이라는 프로퍼티를 가지고 있습니다.
- UISceneDelegate의 서브클래스인 UIWindowSceneDelegate 라는 것이 있습니다.
app-specific tasks를 관리하는데 사용할 수 있는 메소드들이 있다고 하네요.
프로젝트를 만들면 자동으로 만들어지는 SceneDelegate가 UIWindowSceneDelegate를 채택하고 있습니다. 어쩐지 낯설지 않았군요...!!
[3] UISceneSession
- 앱의 scenes 중 하나의 scene에 대한 정보를 포함하고 있는 오브젝트 입니다.
- 그래서 scene이라는 프로퍼티가 있습니다. 옵셔널인데 scene이 session으로부터 connect & disconnect 되기때문인 것 같습니다.
- scene의 configuration에 대한 정보도 가지고 있습니다.
- session의 정보 관련된 몇가지 프로퍼티들이 더 있네요
[4] 역할들
iOS 12 이하, AppDelegate 밖에 없던 시절에는
Process LifeCycle과 UI LifeCycle을 모두 AppDelegate에서 처리하다가
iOS 13에 SceneDelegate가 등장하고 UI LifeCyle처리를 SceneDelegate가 하도록 바뀌었잖아요...!
그래서 역할 분담(?)이 이렇게 됩니다.
'🍏 > iOS' 카테고리의 다른 글
[SceneDelegate] 멀티 윈도우로 파악해보는 SceneDelegate 메소드들 (1) | 2020.04.26 |
---|---|
[App's Life Cycle] App-Based Life-Cycle과 Scene-Based Life-Cycle (2) | 2020.04.26 |
[Multitasking] 아이패드 앱에 multitasking을 지원할 때, 고려해야할 점 (0) | 2020.04.24 |
[Multitasking] 아이패드 앱에 multitasking과 drag & drop을 지원하는 방법 (1) | 2020.04.23 |
[UIFont] Custom 폰트가 안먹을 때, fontName을 확인해보자 (3) | 2020.04.05 |
- Total
- Today
- Yesterday
- METAL
- 플러터 싱글톤
- PencilKit
- 장고 Custom Management Command
- Flutter Spacer
- Flutter getter setter
- flutter deep link
- Django Heroku Scheduler
- Flutter Text Gradient
- Python Type Hint
- Django FCM
- Sketch 누끼
- flutter build mode
- 플러터 얼럿
- DRF APIException
- Flutter 로딩
- flutter dynamic link
- cocoapod
- github actions
- ipad multitasking
- Flutter Clipboard
- ribs
- SerializerMethodField
- Watch App for iOS App vs Watch App
- 구글 Geocoding API
- drf custom error
- Dart Factory
- 장고 URL querystring
- flutter 앱 출시
- Django Firebase Cloud Messaging
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |