View
안녕하세요.
오늘은 View에 대해서 학습해보도록 하겠습니다.
먼저 공식 문서를 살펴보도록 하겠습니다.
https://developer.apple.com/documentation/uikit/views_and_controls
콘텐츠를 화면에 나타내는 친구라고 하네요. 너무나 당연한 소리네요.
더 읽어보니깐
이런 문장이 있습니다.
UIView가 모든 View의 근본이라고 하네요.
그니깐 결국 View는 UIView의 인스턴스거나 UIView를 상속받는 클래스들의 인스턴스인 것입니다.
View Hierarchy (뷰 계층)
View들은 다른 View들의 주인이 될 수 있습니다.
View를 다른 View안으로 포함시키면 포함하고 있는 View가 superview가 되는 것이고 포함된 View가 subview가 됩니다.
공식 문서를 보면 View들의 관계를 View Hierarchy를 통해 쉽게 할 수 있다고 합니다.
View hierachy에 대해서 알아봅시다.
View hierarchy는 window에 있는 View들 간에 관계를 정의합니다.
하나의 View는 오직 하나의 superview만 가질 수 있습니다.
그러나 subview들은 여러 개를 가질 수 있습니다.
스토리보드를 통해 직접 확인해도록 합시다.
우선 뷰를 하나 추가해 보겠습니다.
ViewController에 View를 추가하니
ViewController가 기본으로 가지고 있는 View 아래에 추가된 것을 확인할 수 있습니다.
View가 yellowView의 subview가 된 것입니다.
view의 subview를 출력했을 때 노란색 뷰가 나오는 것을 확인할 수 있습니다.
View를 하나 더 생성해서 yellowView안에 넣어보겠습니다.
redView가 yellowView안으로 들어간것을 확인할 수 있습니다.
redViewr가 yellowView의 subview가 된 것을 확인할 수 있습니다.
스토리보드에서 redView를 살짝 올려보겠습니다.
yellowView와 동등한 위치로 올리면
더 이상 redView가 yellowView의 subview가 아닌 것을 확인할 수 있습니다.
view debugging을 통하면 뷰 계층을 더 자세히 확인할 수 있습니다.
그런데 스토리보드에서 보이지 않던 UIWindow가 보입니다.
이것까지 학습해보겠습니다.
UIWindow
https://developer.apple.com/documentation/uikit/uiwindow/
공식 문서에서는 앱 UI의 배경이면서, View들의 event들을 전달하는 객체라고 합니다.
굉장히 중요한 친구 같습니다.
특별한 일이 없으면 UIWindow는 한 개만 필요합니다.
또, 스토리보드를 사용할 경우 자동으로 window를 만들어준다고 합니다.
SceneDelegate 파일을 확인해보면 아래와 같이 UIWindow가 존재하는 것을 확인할 수 있습니다.
스토리보드를 사용하면 window객체가 생성되서 저 window에 넣어집니다.
window를 생성해보는 일은 나중에 스토리보드 없이 뷰를 그릴 때 다룰 것 같습니다.
오늘은 여기까지 하겠습니다.