본문 바로가기
iOS

[iOS] View Life Cycle (UIKit)

by SiO2whocode 2025. 3. 28.
  • viewDidLoad()
    • 뷰가 메모리에 생성됐을 때 호출됨 (최초 1번)
    • 뷰에 속한 내용들이 모두 메모리에 로드된 후에 호출되기 때문에, viewdidload를 실행할 때는 outlet 과 같은 변수들에 모두 값이 채워져있음이 보장됨
  • viewWillAppear()
    • 뷰가 App의 뷰 계층에 추가될 때 호출됨 (스크린에 뷰가 뜨기 바로 직전 → 뷰가 뜰 때 마다 호출)

*주의점: 뷰가 처음 생성될 때만 viewDidLoad()가 실행되기 때문에, 만약 A뷰를 띄우고 B뷰로 넘어갔다가 다시 A뷰로 돌아오는 경우 viewDidLoad()는 실행되지 않지만 viewWillAppear()는 실행됨. 따라서 화면이 뜰 때 마다 실행되어야 하는 코드는 viewWillAppear()에 속해야한다.

  • viewDidAppear()
    • 뷰가 앱의 뷰 계층에 추가된 에 호출됨
    • 사용 예: 애니메이션 추가할 때 → 뷰가 나타나고 난 에 애니메이션이 나와야 타이밍이 적절해짐.
      (viewDidLoad()나 viewWillAppear()에 넣으면 어무 일찍 애니메이션이 실행됨)
  • viewWillDisappear()
    • 뷰가 앱 hierarchy**(뷰 계층)에서 삭제되기 직전에** 호출됨
    • 사용 예: 뷰가 사라지기전에 뷰에 있는 데이터나 뷰에서 변경된 데이터를 저장해두어야 할 때
  • viewDidDisappear()
    • 뷰가 앱의 뷰 계층에서 지워진 직후 호출됨
  • viewWillLayoutSubviews()
    • 뷰의 bound가 변할 때, 그치만 뷰의 subview들이 배치되기 직전에 호출됨
    • 실행 예: 가로모드에서 세로모드로 변할 때 view의 bound가 변함
  • viewDidLayoutSubviews()
    • 뷰의 bound가 변할 때, 뷰의 subview들도 배치된 후에 호출됨
728x90