29.10.21 릴리 TIL

Lily·2021년 10월 30일
0

Today I Learned

목록 보기
17/30

오늘 배운 내용! 🤓


UIViewController

모든 view controller에서 공통되게 적용되는 행동을 정의해둔 class

상속받아서 custom class에 메서드와 프로퍼티를 추가해서 내가 원하는 동작을 구현할 수 있다.

주요 역할

  • view의 content를 update
  • view의 UserInteraction에 respond
  • 전반적 interface의 layout을 관리하고 view의 사이즈를 조정
  • 다른 viewController와 협업

Custom subclass가 하는 일

1. View Management

각 View Controller는 뷰의 계층구조를 관리한다.

view 프로퍼티엔 root view가 저장되어있다.

root view

  • 최상위의 view.
  • 다른 view들을 담는 container
  • 사이즈와 위치는 parent viewController와 App의 window에 따라 결정된다.
    (항상 디바이스 화면 전체를 채울 수 있는 크기를 유지)

window는 단, 하나의 root viewController만 참조한다. (?)

  • view 프로퍼티는 lazy property이다.
    loadView()view에 root view를 할당하고, 메모리에 로드한다.

View Life Cycle 의 차이: Full Screen vs Page Sheet

같은 presentation 화면 전환 방식이지만, 어떻게 보여지느냐에 따라 view life cycle엔 차이가 있다.

결론부터 말하면,
Page sheet방식은 첫 화면의 view는 그대로 있다. 따라서 첫번째 뷰의 viewWillDisappear() viewDidDisappear() 는 호출 되지 않는다.
Page sheet방식은 두번째 화면으로 전환하더라도, 첫 화면이 뒷 배경으로 보여진다. 따라서 첫화면으로 돌아와도 첫화면의 내용은 그대로이다.
스크린샷 2021-10-30 오후 9 15 27


반면에 Full Screen방식과 Navigation방식으로 전환하면 첫번째 view는 사라진다. viewWillDisappear() viewDidDisappear() 가 호출된다.
스크린샷 2021-10-30 오후 9 07 37

profile
i🍎S 개발을 합니다

0개의 댓글