iOS/UIKIT

iOS 화면 표현 구조

밤새는 탐험가89 2024. 1. 22. 16:16

 

 

 

디바이스 스크린에 하나의 화면만 표시 가능 

 

다른 프로그램 실행되면

기존의 화면은 내려가고 그 자리를 새로운 화면이 대신 채움 

 

 

 

윈도우

iOS에서 디바이스의 스크린을 빈틈없이 채우기 위한 객체 

유저 인터페이스 표현 계층의 최상위에 위치 

 

 

 

뷰의 일종이지만, 직접 콘텐츠를 가지지 않음 

단지 콘텐츠를 갖는 뷰를 내부에 배치하여 화면에 출력하는 역할 

 

 

 

만약에 화면이 전환된다면? 

단지 윈도우 내부에 배치된 뷰 콘텐츠만 변경됨

(윈도우 객체 자체는 전환되지 않음)

 

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

 

UIWindow | Apple Developer Documentation

The backdrop for your app’s user interface and the object that dispatches events to your views.

developer.apple.com

 

 

 

뷰는 콘텐츠를 담아 이를 스크린 상에 표시 및 

사용자의 입력에 반응하는 객체 

 

 

 

하나 이상의 뷰들이 콘텐츠를 표현, 윈도우는 이를 모아 모바일 디바이스의 스크린에 출력 

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

 

UIView | Apple Developer Documentation

An object that manages the content for a rectangular area on the screen.

developer.apple.com

 

아래 이미지는 여러 개의 뷰들이 윈도우에 올려져 디바이스 화면에 표현되는 중첩 구조를 나타냄 

중첩된 뷰와 윈도우 (애플 공식 사이트)

 

 

 

모바이 디바이스의 디스플레이는 하나이기 때문에 

애플리케이션이 생성하는 윈도우도 하나이지만, 

외부 디스플레이가 연결된 경우

애플리케이션은 두 번째 디스플레이에 콘텐츠를 표현하기 위해 

새로운 윈도우 객체를 생성

 

따라서 iOS에서 실행되는 모든 애플리케이션에는 최소 하나 이상의 윈도우와 뷰가 존재 

 

 

 

뷰 컨트롤러 

윈도우와 뷰 사이를 연결

 

 

뷰의 계층을 관리하여 윈도우에 전달 

터치 이벤트를 윈도우로부터 전달 받아 처리하는 역할 

 

 

여기서 윈도우 객체는 항상 루트 뷰 컨트롤러만을 참조

그 외 컨트롤러는 직접적인 관리 대상 아님 

 

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

 

UIViewController | Apple Developer Documentation

An object that manages a view hierarchy for your UIKit app.

developer.apple.com

 

뷰 컨트롤러들은 각각 하나의 화면을 담당하여 콘텐츠를 표현 및 뷰 관리하는데

이를 씬(Scene)이라고 함 

 

만약에 A, B 두 개의 씬으로 이루어진 애플리케이션이 있다면?

각가의 씬을 표현하는 두 개의 뷰 컨트롤러 필요 

씬을 담당, 콘텐츠를 표시하는 뷰 컨트롤러 = 콘텐츠 뷰 컨트롤러 

 

 

다른 뷰 컨트롤러의 연결 관계를 관리하는 뷰 컨트롤러 = 컨테이터 뷰 컨트롤러 

(네비게이션 컨트롤러, 탭 바 컨트롤러, 페이지 컨트롤러 등)

 

 

 

뷰 계층

https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/TheViewControllerHierarchy.html

 

View Controller Programming Guide for iOS: The View Controller Hierarchy

View Controller Programming Guide for iOS

developer.apple.com

 

각각의 뷰는 자기 자신을 스크린 상에 표시 및 

다른 뷰 객체를 포함하는 컨테이너의 역할 수행 

 

 

뷰의 계층 구조상에서 다른 뷰를 포함하는 뷰 = 슈퍼 뷰

슈퍼 뷰에 포함된 뷰 = 서브 뷰 

 

 

서브 뷰는 슈퍼 뷰를 기준으로 레이아웃 구성

슈퍼 뷰는 서브 뷰가 레이아웃을 구성할 수 있도록 내부적으로 원점을 포함하는 

좌표 체계를 제공 

 

 

각각의 씬은 자신만의 뷰 계층 구조를 갖고 있음 

뷰 계층 구조 최상위에 있는 뷰 = 루트 뷰 또는 콘텐츠 뷰

 

 

루트 뷰 내부에는 여러 개의 서브 뷰 추가

루트 뷰는 서브 뷰들을 모아 하나의 전체 뷰 구성, 

뷰 컨트롤러를 통해 윈도우에 전달 

 

 

윈도우와 루트 뷰 컨트롤러, 콘텐츠 뷰에 대한 참조 관계