UIView와 UIViewController

Bright Hyeon·2021년 12월 24일
3

iOS

목록 보기
4/9
post-thumbnail

🍎 UIView란?

  • UIView는 Apple 공식문서에 '화면의 직사각형 영역에 대한 내용을 관리하는 객체'라 명시되어있습니다.

  • 이는 화면을 구성하는 요소들의 기본 클래스이며, 위치와 크기를 갖는 사각형으로, 배경색을 가지고 있고, 문자나 이미지 등의 컨텐츠를 가지는 것이 가능합니다.

    그림과 같이 여러 UI컴포넌트들의 부모클래스가 되는 것이 UIView입니다.

  • 그렇기에 앱에서 흔히 볼 수 있는 Label, Image, Button, 기타 인터페이스 요소를 표시하려면, UIKit Framework가 제공하는 뷰 하위클래스를 사용하면 됩니다.

🍎 UIViewController

  • UIViewController는 Apple 공식문서에 'UIKit 앱의 뷰 계층 구조를 관리하는 객체'라 명시되어있습니다.

  • 이는 앱의 근간을 이루는 객체로 모든 앱은 최소한 하나 이상의 뷰 컨트롤러를 가지고 있는데, 한 마디로 사용자가 화면을 보는 것에 대한 관리기능을 제공하는 객체입니다. (xcode에서 프로젝트를 생성하면 기본적으로 ViewController파일 하나는 이미 존재함)

UIViewController의 역할.

데이터 변화에 따라서 view 컨텐츠를 업데이트
view들과 함께 사용자 상호작용에 응답 및 이벤트 처리
view를 리사이징하고 전체적인 인터페이스의 레이아웃 관리.
뷰컨트롤러들 간 화면 전환
다른 뷰컨트롤러들과 함께 앱을 구성.

  • 쉽게 말해 화면 하나를 관리하는 단위라고 생각하면 됩니다.

🍏 ViewController의 유형

  • 뷰컨트롤러에는 두 가지 유형이 있습니다.

🙋 Content View Controller

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

👩‍👧‍👦 Container View Controller

  • 하나 이상의 Child View Controller를 가지고 있으며, 하나 이상의 Child View Controller를 관리하고 레이아웃과 화면전환을 담당하는 뷰컨트롤러입니다.
  • Container View Controller는 자식뷰컨트롤러의 내용을 관리하지 않고, 크기 조정 및 배치만 관리합니다. 실제 화면 구성과 이벤트 관리는 각 Child View Controller에서 이뤄집니다.
  • 대표적으로 UINavigationController, UITabBarController 및 UISplitViewController 등이 있습니다.

🍎 실제 xcode 화면

  • 실제로 View는 사용자에게 보여지는 부분인 객체이고, ViewController는 화면에 보이지 않는 객체입니다.

  • UIView를 상속받은 모든 친구들을 다 View라고 생각하면되고, 이 View를 관리해주는 눈에 보이지 않는 친구들이 ViewController라 생각하시면 됩니다.

  • ViewController는 따로 파일형태로 되어있고, 화면 하나하나에 그 화면(View)을 관리하는 ViewController 클래스가 연결되어 있으며, UIViewController를 서브클래싱하고 있습니다.

    위 사진: 좌측 화면 - (root)View, 우측 화면 - 그를 관리하는 ViewController
    아래 사진: 좌측 화면 - (codePresent)View, 우측 화면 - 그를 관리하는 CodePresentViewController

공부중인 단계라 코드가 클린하지 못한점은 ... 유감입니다...😂

상기 내용들은 fastcampus강의, youtube, 구글링 등을 통해 작성된 내용입니다.

profile
i'm Obsessed with Swift. iOS

1개의 댓글

comment-user-thumbnail
2023년 11월 9일

가장 첫번째 이미지 퍼가도될까요?

답글 달기