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 상태 저장
반응형