Uiwindow란
1. 개요
UIWindow
는 UIView
의 서브클래스 iOS 앱 화면 출력의 최상단 컨테이너 일반적으로 앱당 하나의 UIWindow 사용 보통 AppDelegate
나 SceneDelegate
에서 생성 및 설정
2. 주요 역할
뷰 계층의 루트 역할 이벤트 전달의 시작점 (터치, 키보드 등) 상태 변화에 따른 UI 표시 (예: 키보드, 상태 표시줄 등 포함 가능)
3. 자주 사용하는 속성
rootViewController:
- 윈도우에서 가장 처음 표시할 뷰 컨트롤러, 이 컨트롤러의 뷰가 전체 UI 계층의 시작점
isHidden:
- true면 윈도우가 숨겨져 화면에 보이지 않음
windowLevel:
- UIWindow의 표시 우선순위 기본값:
.normal
.statusBar
,.alert
,.custom(...)
등의 값으로 설정 가능
4. 생성 및 설정 예시 (SceneDelegate 기준)
1
2
3
4
5
6
7
8
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
let window = UIWindow(windowScene: windowScene)
window.rootViewController = MyRootViewController()
window.makeKeyAndVisible()
self.window = window
}
5. UIWindowLevel 종류
- 레벨 설명
- .normal 기본 레벨. 앱 UI용
- .alert 경고창 같은 긴급 UI 표시용
- .statusBar 상태 표시줄 위에 표시됨 (현재는 사용 권장되지 않음)
6. 실무에서의 활용 예
- 키오스크 모드: 여러 개의 UIWindow를 구성해 잠금 영역/메인 영역 분리
- 커스텀 토스트/오버레이: windowLevel을 조절해 앱 UI 위에 표시
- 디버깅용 HUD(Heads Up Display) 구성
7. 주의사항
- 여러 UIWindow를 쓸 수 있지만 관리 복잡도가 높아짐
- 일반 앱에서는 SceneDelegate가 생성해주는 기본 UIWindow 하나만 써도 충분
- iOS 13부터 멀티 윈도우(멀티 씬) 지원 → UIWindowScene 연동 필요
This post is licensed under CC BY 4.0 by the author.