iOS

View

H4NJUN 2021. 12. 15. 18:55

안녕하세요.

 

오늘은 View에 대해서 학습해보도록 하겠습니다. 

 

먼저 공식 문서를 살펴보도록 하겠습니다.

 

https://developer.apple.com/documentation/uikit/views_and_controls

 

Apple Developer Documentation

 

developer.apple.com

 

 

콘텐츠를 화면에 나타내는 친구라고 하네요. 너무나 당연한 소리네요.

 

더 읽어보니깐 

이런 문장이 있습니다.

 

UIView가 모든 View의 근본이라고 하네요.

 

그니깐 결국 View는 UIView의 인스턴스거나 UIView를 상속받는 클래스들의 인스턴스인 것입니다.


 

View Hierarchy (뷰 계층)

 

View들은 다른 View들의 주인이 될 수 있습니다.

 

View를 다른 View안으로 포함시키면 포함하고 있는 View가 superview가 되는 것이고 포함된 View가 subview가 됩니다.

 

공식 문서를 보면 View들의 관계를 View Hierarchy를 통해 쉽게 할 수 있다고 합니다.

 

View hierachy에 대해서 알아봅시다.

 

https://developer.apple.com/library/archive/documentation/General/Conceptual/Devpedia-CocoaApp/View%20Hierarchy.html

 

View hierarchy

Retired Document Important: This document may not represent best practices for current development. Links to downloads and other resources may no longer be valid. View hierarchy A view hierarchy defines the relationships of views in a window to each other.

developer.apple.com

 

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/

 

Apple Developer Documentation

 

developer.apple.com

공식 문서에서는 앱 UI의 배경이면서, View들의 event들을 전달하는 객체라고 합니다.

 

굉장히 중요한 친구 같습니다.

 

특별한 일이 없으면 UIWindow는 한 개만 필요합니다.

 

또, 스토리보드를 사용할 경우 자동으로 window를 만들어준다고 합니다. 

 

SceneDelegate 파일을 확인해보면 아래와 같이 UIWindow가 존재하는 것을 확인할 수 있습니다.

 

 

스토리보드를 사용하면 window객체가 생성되서 저 window에 넣어집니다.

 

window를 생성해보는 일은 나중에 스토리보드 없이 뷰를 그릴 때 다룰 것 같습니다.

 

오늘은 여기까지 하겠습니다.