

UIkit Framework 계층도임 이걸 왜 보여주냐고 ?
우리는 View에 관련하여 이야기 할거기 때문임
UIWindowScene은 앱의 UI 인스턴스를 관리하며, 해당 씬에서 표시되는 하나 이상의 창(UIWindow)을 포함합니다.
프로젝트가 생성될 때, SceneDelegate.swift를 보면
이런식으로 되어있을 거임
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let _ = (scene as? UIWindowScene) else { return }
}
전에 잠깐 얘기했듯이 SceneDelegate는 Scene(UI 인스턴스) 관리도 하는 역할임
그 관리를 UIWindowScene을 통해서 다 한다고 생각하면 좋을듯
즉,
- SceneDelegate는 UIWindowScene의 생명주기 이벤트를 처리합니다.
- UIWindowScene은 하나 이상의 UIWindow를 포함할 수 있는 컨테이너.
- SceneDelegate의 window 프로퍼티는 이 UIWindowScene에 연결된 주요 UIWindow를 참조.
- 이 window를 통해 앱의 뷰 계층구조와 뷰 컨트롤러를 설정하고 관리.

앱의 사용자 인터페이스를 위한 배경과 뷰에 이벤트를 전달하는 객체.
– 모든 앱은 하나의 UIWindow 인스턴스를 가진다.
– 앱의 여러 뷰들은 이 UIWindow 인스턴스 내 포함된다
입력받으면 바로 동작하는게 아니라 이새기를 거쳐서 동작함
징검다리라 생각하면될듯
UIScene은 앱의 UI 인스턴스를 나타내며, 사용자가 요청하거나 앱이 생성한 각 UI 인스턴스에 대해 UIKit이 씬 객체를 생성합니다.
핵심 특징
- 독립적 UI 표현: 앱의 분리된 인터페이스 인스턴스를 관리
- 독립적 생명주기: 각 씬은 고유한 상태 전환(포그라운드/백그라운드)을 가짐
- 멀티태스킹 지원: iPad 분할 화면, 외부 디스플레이 등 지원
스토리보드에서 편집하는 각 ViewController는 하나의 화면(Scene)을 담당함.
ViewController는 화면의 콘텐츠를 표현하고 View를 관리를 하는데,
보통 하나의 Scene에는 하나의 ViewController가 필요합니다.
즉, 앱에 두 개의 Scene이 있다면, 두 개의 ViewController가 필요하다고 볼 수 있음.

로 정의할 수 있음
우리는 View, Button 같은 객체들을 화면에 끌어다가 쓸건데
그걸 관리해주는 상위에있는 객체라 생각하면될듯
뷰: 사용자에게 보일 수 있는 객체
– 뷰는 UIView의 인스턴스이거나 UIView 하위 클래스의 인스턴스이다.
• 통상 클래스 계층에서 단말 뷰를 컨트롤 또는 위젯이라 함
– 뷰는 자신을 어떻게 그리는지 알고(뷰 자신 이) 있다
– 뷰는 터치와 같은 이벤트를 처리할 수 있다.
– 뷰 인스턴스는 뷰 계층 구조상에 존재한다. 뷰 계층 구조의 루트는 앱의 윈도우이다
다음과 같은 특징으로 정리할 수 있을듯.
이분 방법대로 빌드해서 View Debugging하면

이런식으로 나눠 볼 수 있음
조금 정리를 하자면

- 최상위에서 하위로: UIWindowScene → UIWindow → 컨테이너 뷰 → ViewController → UIView → UI 컴포넌트(UILabel, UIButton 등)의 계층적 트리 구조로 배치.
- 이벤트 처리: 사용자 터치는 위에서 아래로 전달되어 적절한 뷰에서 처리됩니다.
- 레이아웃: 부모 뷰가 자식 뷰의 크기와 위치를 결정하며, 상위에서 하위로 레이아웃이 계산됩니다.
- 렌더링: 화면 그리기는 하위에서 상위로 진행되어 최종 화면이 구성됩니다.
화면이 그려지는 과정
– 윈도를 포함한 각 계층 구조의 뷰는 자신을 레이어(CALayer)에 그린다.
– 모든 뷰의 레이어들은 전체 화면에 합성된다
이정도 될거같음
더 자세한건