iOS 기본 (swift)
[iOS - swift] UIWindow, makeKeyAndVisible()
jake-kim
2021. 1. 24. 01:51
UIWindow 란?
- View 들을 담는 컨테이너
- 사용자 인터페이스에 배경을 제공하며 이벤트 처리 행동을 제공하는 객체

- 시각적인 화면을 가지고 있지 않고 기능적인 면을 담당(상호작용 처리, fkdnxldx z축 레벨 설정, 좌표계 변환)
- 자동으로 Xcode가 앱의 기본 Window를 제공
- 최초 iOS프로젝트에는 Storyboard를 사용하여 앱의 View들을 정의
- storyboard는 Xcode에서 자동으로 제공하는 AppDelegate(또는 SceneDelegate)에 window속성이 존재해야가능

* 주의할점: UIWindow는 UIView의 subclass

스토리보드가 아닌 코드로 View를 구성할 때 - Window rootViewController 수정이 필요
- window가 가리키는 스토리보드 이름 정보는 info.plist에 저장

- 스토리보드를 사용하면 UIWindow객체를 새로 만들필요가 없지만, rootViewController를 수정
// AppDelegate or SceneDelegate
let myVC = UIViewController()
window = UIWindow(frame: UIScreen.main.bounds)
window.rootViewController = myVC
window?.makeKeyAndVisible()
- window.makeKeyAndVisible() 의미
- keyWindow로 설정
- keyWindow: window가 여러개 존재할 때, 가장 앞쪽에 배치된 window를 `key window`라고 지칭

- window의 rootViewController를 위에서 세팅해주고 makeKeyAndVisible() 부르면 마침내 지정한 rootViewController가 상호작용을 받는 현재 화면으로 세팅 완료
* makeKeyAndVisible 개념 참고
https://developer.apple.com/documentation/uikit/uiwindow/1621610-makekey