728x90
UIWindow
- 앱 UI의 배경
- View들에게 event를 보내는 object
- UIView를 상속 받는다.
- ViewController와 함께 event들을 다루고 앱 운영에 기반한 많은 태스크들을 수행한다.
- windows를 사용하는 경우
- 앱의 콘텐츠를 표시하기 위해서 메인 윈도우를 제공해야할 때
- 추가적인 콘텐츠를 표시하기 위해 추가적인 윈도우들을 만들어야 할 때
- 보통 Xcode는 앱의 메인 윈도우를 제공함.
- storyBoard는 AppDelegate에 window 프로퍼티를 요청하게 된다
- 즉 storyBoard를 사용하는 경우라면 자동으로 AppDelegate에 window프로퍼티가 생성된다.
- 하지만 storyBoard를 사용하지 않는 경우라면 자기 스스로 만들어야 한다.
- 보통 대부분의 앱은 메인 스크린의 콘텐트를 표시하는 1개의 window만 필요하다.
- 외부 스크린을 연결하는 경우엔 추가 window가 필요할 수 있다.
- 그 외에 UIWindow 오브젝트를 사용하는 경우
- 다른 윈도우와의 가시성 조절을 위해 z축 레벨을 설정해야 하는 경우
- windows를 보여주고 키보드 이벤트의 타겟을 지정해야할 때
- 좌표값을 window 좌표 시스템에 맞춰서 바꿔야할 때
- window의 root ViewController를 바꿔야할 때
- window위에 떠있는 screen을 바꿀 때
- Windows는 스스로는 아무런 시각적인 생김새가 없다.
- 대신 1개의 window는 window의 root ViewController에 의해 관리되는 여러 개의 view들을 host한다.
- 쉽게 말하자면 컨테이너의 역할을 하는 최상위 UIView이고 그 밑에 subView들이 들어간다고 보면됨.
키보드 상호작용의 이해
- 터치 이벤트들은 발생한 window로 전달되는 반면에, 상대 좌표를 가지고 있지 않은 event들은 key window로 전달된다.
- 한 번에 한 window만 key window가 될 수 있고 isKeyWindow 프로퍼티를 이용해서 확인 가능함.
- 대부분의 경우 앱의 메인 윈도우가 key window이지만 UIKit에 의해서 때때로 다른 window가 될 수도 있다. (Risky한 부분)
- 어떤 윈도우가 key window인지 알고 싶다면 didBecomeKeyNotification, didResignKeyNotification을 이요해서 알 수 있다.
728x90
'iOS > 설명' 카테고리의 다른 글
[iOS] translatesAutoresizingMaskIntoConstraints (0) | 2021.06.17 |
---|---|
[iOS] CAEmitterLayer로 애니메이션 효과 만들기 (0) | 2021.06.15 |
[iOS] iOS 앱 배포 방식 (2) | 2021.05.27 |
[iOS] UIView initializer (0) | 2021.05.27 |
[iOS] Image Scaling (0) | 2021.05.03 |
댓글