왕논의 연구실

iOS 화면 구성 시 자주 사용하는 Override 함수 정리 (UIView / UIViewController) 본문

iOS/Swift

iOS 화면 구성 시 자주 사용하는 Override 함수 정리 (UIView / UIViewController)

ywangnon 2025. 4. 19. 21:43

UIView 기준

함수 호출 시점 주로 하는 일 비고
init(frame:) 코드로 View 생성 시 View 초기 설정 초기화
init?(coder:) Storyboard, Xib 로드 시 View 초기 설정 초기화
layoutSubviews() Frame 변경 시 서브뷰 레이아웃 재배치 AutoLayout 안 쓰거나 커스텀 레이아웃 할 때 주로 사용
draw(_:) View 다시 그릴 때 직접 그래픽 그리기 CoreGraphics, 무거움 주의
updateConstraints() constraints 업데이트 필요 시 제약조건 동적 업데이트 setNeedsUpdateConstraints() 호출 후 실행됨

UIViewController 기준

함수 호출 시점 주로 하는 일 비고
loadView() 메모리에 View 로드 시 View 직접 생성 (특수 케이스) 보통 override 안함
viewDidLoad() View가 메모리에 올라온 직후 초기 설정, 데이터 로드 가장 많이 쓰는 함수
viewWillAppear(_:) View 나타나기 직전 UI 업데이트, 애니메이션 준비 여러 번 호출됨
viewDidAppear(_:) View 나타난 직후 애니메이션 실행, Analytics 여러 번 호출됨
viewWillLayoutSubviews() AutoLayout 계산 직전 레이아웃 조정, 사이즈 변경 대응 frame이 바뀔 때마다 호출
viewDidLayoutSubviews() AutoLayout 계산 직후 서브뷰 레이아웃 보정 SafeArea 등 계산 후 처리
viewWillDisappear(_:) 사라지기 직전 리소스 정리, 타이머 중지 여러 번 호출됨
viewDidDisappear(_:) 사라진 직후 상태 저장, 리스너 해제 여러 번 호출됨

핵심 흐름 요약 (UIViewController 생명주기 + 레이아웃 흐름)

loadView() 
 -> viewDidLoad() 
 -> viewWillAppear()
 -> viewWillLayoutSubviews()
 -> viewDidLayoutSubviews()
 -> viewDidAppear()
View 변경 발생 시 처리 순서
bounds / frame 변경 viewWillLayoutSubviews() → viewDidLayoutSubviews()
constraints 변경 updateConstraints() → layoutSubviews()

개발자가 기억하면 좋은 원칙

  • viewDidLoad → 초기 설정
  • viewWillLayoutSubviews → 크기 변동 대응
  • layoutSubviews → UIView 레이아웃 직접 조정
  • draw → 정말 마지막 수단 (CoreGraphics)
  • viewDidLayoutSubviews → AutoLayout 반영 후 세팅
  • viewWillAppear / viewDidAppear → 화면 갱신 or 애니메이션
  • viewWillDisappear / viewDidDisappear → 리소스 해제 or 상태 저장

'iOS > Swift' 카테고리의 다른 글

CoreBluetooth - 입문  (0) 2025.04.17
Swift XCTest 정리 - 입문  (0) 2025.04.15
CAEmitterCell  (0) 2025.04.12
CAEmitterLayer  (0) 2025.04.12
OSLog 요소  (0) 2025.04.11