chaneeii / iOS-Study-Log

✨ iOS에 대해 공부한 것들을 기록합니다 ✨
18 stars 0 forks source link

ViewController / ViewController LifeCycle / 화면전환 & 데이터전달 #4

Open chaneeii opened 2 years ago

chaneeii commented 2 years ago

iOS 의 유저인터페이스 구조

iOS 는 일반 데스크톱과 달리 UI 표현구조가 다르다. 스마트폰의 특성상 단 하나의 화면만 표현되고 다른 프로그램이 실행되면 기존의 화면은 내려가고 그 자리에 새로운 화면이 들어옴. -> 이러한 과정을 구현하는데 윈도우와 뷰 객체가 사용된다.

Window 와 View 그리고 ViewController

Window

View

하나 이상의 view들이 콘텐츠를 표현하면, window는 모바일 디바이스 스크린에 이것들을 종합하여 표현한다. 이러한 방식으로 다양한 형태의 view를 화면에 나타내는데 영역이 겹쳐질 경우 중첩된 형태로 아래와 같이 나타낸다. image

iOS에서 실행되는 모든 애플리케이션은 최소한 하나 이상의 윈도우와 뷰를 가진다

  • 대부분의 경우에서 모바일 디바이스 디스플레이는 하나뿐이므로, 애플리케이션이 생성하는 윈도우 역시 하나이지만, 외부 디스플레이가 연결될 경우, 이때는 윈도우가 하나 더 추가됨
  • 윈도우 안에는 뷰, 그것도 수많은 뷰들이 포함되어 있으며, 각각의 뷰는 모두 각자의 영역에서 원하는 내용을 표시한다.

ViewController

윈도우와 뷰 사이는 뷰 컨트롤러를 통해 연결된다. 뷰컨트롤러는 뷰의 계층을 (View Hierachy) 관리하여 윈도우에 전달하고 모바일 디바이스에 감지된 터치 이벤트를 윈도우로부터 전달받아 처리하는 역할을 수행한다.

즉, 윈도우는 ViewController를 통해 제공되는 뷰를 읽어 표현할 뿐, 뷰를 직접 관리하지 않는다.

  • 윈도우 객체에 커스텀 코드가 난립하는 것을 방지
  • 앱이 표현해야하는 모든 뷰를 윈도우 객체 하나가 관리해야 하는 불상사를 막아줌

Root ViewController

ViewController

뷰 계층구조

뷰 컨트롤러 내부는 수많은 뷰들로 이루어 지는데, 이들 뷰는 자기 자신을 스크린상에 표시하기도 하지만, 동시에 다른 뷰 객체를 포함하는 컨테이너의 역할도 수행한다. 이를 뷰의 계층 구조(View hierachy) 라고한다

superview 는 subview가 레이아웃을 구성할 수 있도록 내부적으로 원점을 잡아주는 좌표 체계를 제공한다. 뷰의 계층 구조상에서 뷰들은 서로 상대적인 레이아웃을 이룬다.

루트 뷰 내부에는 각자의 크기와 영역, 표현할 컨텐츠를 가진 여러개의 서브 뷰가 추가되는데, 일부 뷰는 서로 겹치기도 한다. 루트 뷰는 이러한 서브 뷰들을 모아 하나의 전체 뷰를 구성하고, 뷰 컨트롤러를 통해 이를 윈도우에 전달한다.

Reference

chaneeii commented 2 years ago

화면전환 https://one10004.tistory.com/108

chaneeii commented 2 years ago

ViewController

ViewController

뷰 컨트롤러는 UIViewController클래스로 구현되어있다. ViewController란 앱의 기초가 되는 내부 구조이다.

  • 앱은 뷰컨트롤러 로 이루어져 있으며, 모든 앱은 최소한 하나이상의 뷰 컨트롤러를 가지고 있음
  • 사용자가 화면을 보는 것에 대한 관리 기능 제공

ViewController의 주요역할

Reference

chaneeii commented 2 years ago

화면간 데이터 전달하기