iOS - UIView / UIViewController / UINavigationController

이한솔·2023년 7월 31일
2

iOS 앱개발 🍏

목록 보기
2/49

UIView

화면의 직사각형 영역에 대한 내용을 관리하는 객체, UI를 구성하는데 사용되는 객체
화면에 보이는 모든 요소들의 기본 클래스
UIButton UILabel UIImageView UIWebView UIScrollView

아래와 같이 여러 UI컴포넌트들의 부모클래스가 되는 것이 UIView이다.
그렇기에 앱에서 흔히 볼 수 있는 Label, Image, Button 등 기타 인터페이스 요소를 표시하려면 UIView 하위클래스를 사용해야한다.



UIViewController

UI를 관리하는데 사용, 화면 하나를 관리하는 객체
모든 앱은 최소한 하나 이상의 뷰 컨트롤러를 가지고 있다.
xcode에서 프로젝트를 생성하면 기본적으로 ViewController파일 하나는 이미 존재한다.
UIViewController UITableViewController UICollectionViewController

터치, 드래그 등 User Interaction을 처리하고 다른 ViewController와 데이터 공유가 가능하다.



ViewController 유형

1. Content View Controller

우리가 생성하는 주된 유형의 View Controller
화면을 구성하는 뷰들을 직접 구현하고 관리하며, 관련된 이벤트를 처리한다.
(Root View + 하위 View들)


2. Container View Controller

ContentViewController 를 포함하고 있는 ViewController
하나 이상의 Child View Controller를 관리하고 레이아웃과 화면전환을 담당한다.
addChildViewController로 하위 ViewController를 지정해서 하위 ViewController를 가지고 있는 ViewController이다.

ContainerViewController는 ChildViewController의 내용을 관리하지 않고, 크기 조정 및 배치만 관리한다. 실제 화면 구성과 이벤트 관리는 각 Child View Controller에서 한다.

UISplitViewController- iPadOS UINavigationController UITabBarController UIPageViewController



UINavigationController

UINavigationController는 containerViewController중 하나로 Stack 기반이며, 제공하는 navigation 인터페이스로 1개 이상의 viewController 를 관리할 수 있다.
Stack 기반이므로 push, pop을 통해 보여질 viewController를 결정한다.

💡 stack 구조란?
LIFO(Last In First Out)의 특징을 가지는 자료구조

1. navigationBar

앱 상단에 타이틀, 뒤로가기, 설정등 특정 영역
해당 navigationBar 를 통해 굳이 UI를 추가하거나 세팅할 필요없이 해당 view controller 를 위한 UI를 설정할 수 있다.

2. toolbar

앱에서 아래쪽에 공유하기나 여러 버튼들이 있는 영역
기본적으로 navigation controller 에서는 숨김처리 되어 있지만, 숨김을 해제하고 해당 영역을 설정할 수 있다.

3. delegate

특정 Event에서 사용할 수 있는 delegate가 선언되어 있다. 보통 특정 view controller가 보여지거나, 이동간 애니메이션을 설정하기 위해 사용한다.

4개의 댓글

comment-user-thumbnail
2023년 7월 31일

좋은글 감사합니다 :)

답글 달기
comment-user-thumbnail
2023년 7월 31일

잘 읽었습니다

답글 달기
comment-user-thumbnail
2023년 7월 31일

좋은 글 감사합니다!!!

답글 달기
comment-user-thumbnail
2023년 8월 1일

내용을 잘 정리해두셔서 다시 한번 정리하는데 많은 도움이 되었어요, 좋은 글 감사합니당 🥰

답글 달기