일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 재귀
- OSI
- 백준
- Java
- ftz level13
- 큐
- 미로 탐색 알고리즘
- PHP
- windosw 문자열
- 암호수학
- Stack
- System
- 스택
- HTML
- War Game
- 정렬 알고리즘
- 파일 시스템
- 시간복잡도
- pwnable.kr
- web
- 자료구조
- SWiFT
- ftz
- 두근두근 자료구조
- LoB
- 파이썬
- c언어
- C
- level13
- windosws wbcs
- Today
- Total
나의 기록, 현진록
[iOS] iOS 뷰 계층 구조 본문
UIWindowScene
https://developer.apple.com/documentation/uikit/uiwindowscene
UIWindowScene | Apple Developer Documentation
A scene that manages one or more windows for your app.
developer.apple.com
앱의 하나 이상의 UIWindow를 관리하며 UIScene을 상속 받고 있기 때문에 관련 메서드 및 프로퍼티에 접근 가능하다.
windows - window는 여러 개 가질 수 있다.
keyWindows - 윈도우가 여러개 존재할 때 가장 앞쪽에 배치된 윈도우이다.
screen - 화면에 보이는 그 자체(UIScreen 객체이니 hardward 영역인 것 같음)
UIScene 및 UIWindowScene 모두 delegate를 지니고 있으며 scene의 상태가 변경되면 scene 객체는 delegate에 알리며
Scnen의 생명주기 이벤트에 적절하게 반응할 수 있도록 한다.
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
}
UIWindow
UIWindow는 UIView를 상속 받고 있지만 직접 content을 가지지 않는다. content을 가진 UIView를 배치하여 화면에 출력한다.
화면이 전환되더라도 Window 내부에 배치된 UIView가 변경될 뿐 Window는 변경되지 않는다.
앱을 종료하는 경우에만 사라진다.
UIViewController
위에서는 UIWindow에서 View를 내부에 배치한다고 하였다. 하지만 정확하게는 UIViewController를 통해 View를 관리한다.
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = MyViewController()
window?.makeKeyAndVisible()
UIWindow - UIViewController - UIView 관계로 UIViewController가 둘 사이를 중계하는 구조이다.
UIWindow는 UIViewController를 통해 제공되는 View를 참조할 뿐 View를 직접 관리하지 않는다.
UIViewController의 main view (VC에서 self.view)를 window의 subView로 함
UIView
content를 화면에 표시하고 사용자로부터 이벤트를 받는다.
iOS에서 뷰를 계층적으로 관리하는 구조를 알고 싶었다.
1. 앱 마다 UIApplication 인스턴스 하나가 싱글톤으로 생성된다.
1-1. UIApplication의 UIApplicationDelegate가 UISceneSession을 생성한다.
2. UISceneSession(UIApplication)은 UIWindowScene을 관리한다.
2-1 두개 이상의 UIWindowScene도 관리 가능 - 멀티 윈도우
2-2. 멀티 윈도우는 여러 개의 UIWindowScene을 가짐으로써 가능하게 됨 ex) iPad에서 두 개의 사파리 브라우저 실행
3. UIWindowScene은 여러 개의 UIWindow를 관리한다.
4. UIWindow마다 UIViewController를 가진다.
5. UIViewController는 UIView를 관리한다.
UIAppllication은 iOS 시스템이 관리한다. (스프링보드, 커널, 런처 등..)
'iOS' 카테고리의 다른 글
[iOS] App Launch Sequence (0) | 2025.02.20 |
---|---|
[iOS] UIView & CALayer (0) | 2025.02.18 |
[SwiftUI] @ObservedObject @StateObject 관련 트러블 슈팅 (0) | 2024.11.27 |
[iOS] 탭 바 이동 시 애니메이션 적용하기 (0) | 2024.09.15 |
[iOS] 화면 이동 시 탭바(UITabBar) 숨기기 (0) | 2023.05.28 |