codesquad-members-2024 / swift-photoframe

iOS 첫번째 미션
0 stars 1 forks source link

KAI - Scene을 Segue로 연결, ViewController 연결하기 #7

Closed joho2022 closed 6 months ago

joho2022 commented 6 months ago

주요 작업

학습 키워드

UIStructure

UIScreen

물리적인 화면의 속성을 나타낸다.

iOS 디바이스는 하나이상의 화면을 가질 수 있고, 기본 디스플레이와 외부 디스플레이처럼 각 화면은 UIScreen 객체로 표현된다.

UIWindowScene

iOS13부터 도입되어 앱의 UI 인스턴스를 나타낸다.

하나의 앱이 여러개의 UIWindowScene을 가질 수 있다.

UIWindow

앱의 콘텐츠를 담는 컨테이너,

하나 이상의 UIView를 포함한다. 사용자 인터페이스의 배경을 제공한다.

UIView

화면에 표시되는 모든 시각적 요소의 기본 클래스

버튼, 텍스트 라벨, 이미지 등등.. 모든 UI컴포넌트는 UIView를 상속받아 구현된다.

Scene : 앱의 특정 화면 또는 뷰 컨트롤러의 인스턴스를 시각적으로 표현한다. 즉 사용자 인터페이스의 구조를 시각적으로 구성한 것

Segue : 뷰 컨트롤러 간의 화면전환

고민과 해결

Segue에 액션에 있는 여러 항목들은 어떤 효과가 있는가?

모달

사용자에게 일시적으로 집중을 요구하는 컨텐츠를 표시할 때 사용한다.

show(push)

UINavigationController에서 사용된다. 목적지 뷰 컨트롤러가 네비게이션 스택에 푸시된다.

네비게이션 바가 있을 경우, 자동으로 ‘뒤로’버튼이 제공되어 이전화면으로 돌아갈 수 있다.

→ 현재는 NavigationController가 아니기 때문에 모달형식으로 표시된다.

show Detail

원래 화면을 Master, 새 화면을 Detail로 표시한다.

→ 아이폰에서는 똑같아 보이지만 아이패드에서는 화면이 둘로 분할돼서 보이게 된다.

Present Modally

모달형식으로 표시된다. 원래화면은 새화면 뒤에 존재한다.

Popover Presentation

아이패드에서 팝업창을 띄운다.

→ 아이폰에서는 show Detail처럼 의미가 없다.

결과

스크린샷 2024-03-06 오후 12 54 38

🎯주요 작업

📚학습 키워드

다운로드

View LifeCycle : 뷰 컨트롤러의 생성부터 소멸까지의 생명주기

loadView()

뷰 컨트롤러가 관리하는 뷰가 로드되는 단계, 직접 호출하는 경우는 거의 없다

viewDidLoad()

뷰의 로딩이 완료된 후 호출된다. 뷰의 초기 설정을 구성하는데 사용,

이 시점에 뷰의 계층구조가 메모리에 로드되었지만, 아직 화면에 나타나지 않은 상태

viewWillAppear

뷰 컨트롤러의 뷰가 뷰 계층에 추가되고 화면에 보이기 직전에 호출한다.

뷰의 크기 조정, 데이터 새로고침 등이 이루어질 수 있다.

viewDidAppear

뷰 컨트롤러의 뷰가 뷰 계층에 추가되어 화면에 나타난 직후 호출된다.

애니메이션을 시작하거나, 뷰가 나타난 후 필요한 작업을 수행할 때 사용

viewWillDisappear

뷰 컨트롤러의 뷰가 뷰 계층에서 사라지기 직전에 호출된다.

이 시점에서 작업을 정리하거나, 키보드를 숨기는 등의 작업을 수행할 때 사용

viewDidDisappear

뷰 컨트롤러의 뷰가 뷰 계층에서 사라지고 화면에서 사라진 직후 호출된다.

ViewController : iOS 앱에서 화면의 기본단위의 “뷰”를 관리하는 역할

UIKit프레임워크의 중심적인 역할을 하는 클래스 중 하나,

사용자 인터페이스의 화면을 담당,

즉, UIViewController는 하나 이상의 뷰(UIView 객체)를 관리하며, 이 뷰들은 사용자와의 상호작용을 처리하고 데이터를 표시

💻결과

step5

스크린샷 2024-03-07 오전 7 29 28

📚추가학습

뷰 컨트롤러와 관련된…

viewController 역할

root view controller는 화면을 가득 채우는 것!!!!!!!

MVC (Model View Controller)

디자인 패턴, 애플리케이션을 세 가지 구성요소로 나눠 관리한다.

Scene

메뉴, 게임 플레이, 점수 화면처럼 사용자에게 보여지는 하나의 화면

UIScene

iOS13에 도입됨. Scene의 생명주기를 관리하는 클래스라고 생각, UIScene을 사용함으로

앱은 여러개의 독립적인 Scene을 사용할 수 있음 b8139742d00d42ac54ef57499fb91db1

ex ) iPadOS의 Split View와 같은 고급 멀티태스킹 기능

UIWindowScene

UIScene의 서브클래스

하나의 앱이 여러개의 UIWindowScene을 가질 수 있다. 그리고 하나 이상의 윈도우(Window)를 관리하는 데 특화된 클래스

멀티 윈도우 환경에서 각 윈도우의 생명 주기와 관련된 이벤트를 처리

Window

보통 아무 그려지는 것이 없고, 검정색 바탕, 그위에 rootViewController가 윈도우를 가득채우는 역할

System View Controllers

애플은 View Controller를 자주 사용하라고 권장한다

이때, 개발자가 자주 사용하는 표준 사용자 인터페이스를 쉽게 구현할 수 있도록, 일관된 사용자 경험을 제공하기 위해 iOS 시스템에 의해 사전에 디자인되고 구현된 컨트롤러이다.

Segue를 제거하고 다음 화면을 보여줄 때 코드로 보여주는 방법.. 3가지가 있음

  1. ViewController의 view 바꿔치기

    1. ViewController의 view를 바꿔치는 방법은 메모리 overflow 위험이 있기 때문에 좋은 방법이 아니다.
  2. ViewController가 다른 ViewController를 호출(present)

    스크린샷 2024-03-07 오후 1 17 56
  3. NavigationViewController 사용하여 화면 전환(push)