디바이스 스크린에 하나의 화면만 표시 가능
다른 프로그램 실행되면
기존의 화면은 내려가고 그 자리를 새로운 화면이 대신 채움
윈도우
iOS에서 디바이스의 스크린을 빈틈없이 채우기 위한 객체
유저 인터페이스 표현 계층의 최상위에 위치
뷰의 일종이지만, 직접 콘텐츠를 가지지 않음
단지 콘텐츠를 갖는 뷰를 내부에 배치하여 화면에 출력하는 역할
만약에 화면이 전환된다면?
단지 윈도우 내부에 배치된 뷰 콘텐츠만 변경됨
(윈도우 객체 자체는 전환되지 않음)
https://developer.apple.com/documentation/uikit/uiwindow
뷰
뷰는 콘텐츠를 담아 이를 스크린 상에 표시 및
사용자의 입력에 반응하는 객체
하나 이상의 뷰들이 콘텐츠를 표현, 윈도우는 이를 모아 모바일 디바이스의 스크린에 출력
https://developer.apple.com/documentation/uikit/uiview
아래 이미지는 여러 개의 뷰들이 윈도우에 올려져 디바이스 화면에 표현되는 중첩 구조를 나타냄
모바이 디바이스의 디스플레이는 하나이기 때문에
애플리케이션이 생성하는 윈도우도 하나이지만,
외부 디스플레이가 연결된 경우
애플리케이션은 두 번째 디스플레이에 콘텐츠를 표현하기 위해
새로운 윈도우 객체를 생성
따라서 iOS에서 실행되는 모든 애플리케이션에는 최소 하나 이상의 윈도우와 뷰가 존재
뷰 컨트롤러
윈도우와 뷰 사이를 연결
뷰의 계층을 관리하여 윈도우에 전달
터치 이벤트를 윈도우로부터 전달 받아 처리하는 역할
여기서 윈도우 객체는 항상 루트 뷰 컨트롤러만을 참조
그 외 컨트롤러는 직접적인 관리 대상 아님
https://developer.apple.com/documentation/uikit/uiviewcontroller
뷰 컨트롤러들은 각각 하나의 화면을 담당하여 콘텐츠를 표현 및 뷰 관리하는데
이를 씬(Scene)이라고 함
만약에 A, B 두 개의 씬으로 이루어진 애플리케이션이 있다면?
각가의 씬을 표현하는 두 개의 뷰 컨트롤러 필요
씬을 담당, 콘텐츠를 표시하는 뷰 컨트롤러 = 콘텐츠 뷰 컨트롤러
다른 뷰 컨트롤러의 연결 관계를 관리하는 뷰 컨트롤러 = 컨테이터 뷰 컨트롤러
(네비게이션 컨트롤러, 탭 바 컨트롤러, 페이지 컨트롤러 등)
뷰 계층
각각의 뷰는 자기 자신을 스크린 상에 표시 및
다른 뷰 객체를 포함하는 컨테이너의 역할 수행
뷰의 계층 구조상에서 다른 뷰를 포함하는 뷰 = 슈퍼 뷰
슈퍼 뷰에 포함된 뷰 = 서브 뷰
서브 뷰는 슈퍼 뷰를 기준으로 레이아웃 구성
슈퍼 뷰는 서브 뷰가 레이아웃을 구성할 수 있도록 내부적으로 원점을 포함하는
좌표 체계를 제공
각각의 씬은 자신만의 뷰 계층 구조를 갖고 있음
뷰 계층 구조 최상위에 있는 뷰 = 루트 뷰 또는 콘텐츠 뷰
루트 뷰 내부에는 여러 개의 서브 뷰 추가
루트 뷰는 서브 뷰들을 모아 하나의 전체 뷰 구성,
뷰 컨트롤러를 통해 윈도우에 전달
'iOS > UIKIT' 카테고리의 다른 글
CGPoint + CGSize = CGRect (1) | 2024.01.28 |
---|---|
리소스 접근 권한 설정 (카메라, 앨범) (0) | 2024.01.25 |
테이블 만들기 (0) | 2024.01.21 |
네비게이션컨트롤러 및 네비게이션바 (0) | 2024.01.18 |
BMI 계산기 (화면 전환 및 데이터 전달) (0) | 2024.01.16 |