Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- HIG
- UITextView
- combine
- Protocol
- 리팩토링
- UICollectionView
- Xcode
- 클린 코드
- ios
- swiftUI
- 애니메이션
- 리펙토링
- RxCocoa
- clean architecture
- SWIFT
- MVVM
- ribs
- Refactoring
- uiscrollview
- uitableview
- swift documentation
- Observable
- Human interface guide
- tableView
- 스위프트
- collectionview
- map
- rxswift
- 리펙터링
- Clean Code
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] layout subviews 메서드 본문
기본 개념
layout subviews관련 메서드란?
- ViewController관련 메서드인 viewWillAppear, viewDidAppear이 존재하듯이 레이아웃이 결정되기 전, 후의 메서드가 존재
- UIKit은 이처럼 ViewController의 등장에 따른 연관된 부가적인 작업을 할 수 있도록 메서드가 존재
- Layout Subviews역시 레이아웃이 결정되는 과정 중에 레이아웃과 연관된 부가적인 작업들을 수행할 수 있도록 UIKit은 몇 가지 메서드를 존재
ViewController에서 레이아웃이 결정되는 과정
- viewWillLayoutSubviews() 메서드 호출
- ViewController의 컨텐트 뷰가 layoutSubviews()메서드 호출
- layoutSubviews(): 현재 레이아웃 정보들을 바탕으로 새로운 레이아웃 정보를 계산
- 이후 뷰 계층구조를 순회하면서 모든 하위 뷰들이 동일한 메서드를 호출
- 레이아웃 정보의 변경사항을 뷰들에 반영
- viewDidLayoutSubviews()메서드 호출
layout subviews관련 메서드 쓰임
viewWillLayoutSubviews()
- 뷰의 bounds가 변하면 뷰는 하위 뷰들의 위치를 조정하는데, 레이아웃이 결정되기 전에 다음과 같은 작업을 수행하고자 할때 이 메서드를 override하여 사용
- 뷰들을 추가하거나 제거
- 뷰들의 크기나 위치를 업데이트
- 레이아웃 constraint를 업데이트
- 뷰와 관련된 기타 프로퍼티들을 업데이트
layoutSubviews()
- 뷰의 크기가 변경될 때마다 이에 대응하여 하위 뷰들의 크기&위치 변경되어야 함 -> auto layout을 사용하면 각 뷰의 autoresizingMask프로퍼티를 설정하여 상위 뷰의 크기가 변경되었을 때 어떻게 대응할 지 규칙을 정할 수 있음
- 뷰의 크기에 변경이 발생하면 우선 하위 뷰들의 autoresizing 동작을 적용하는데, 변경사항을 반영하기 위하여 layoutSubviews()메서드를 호출 (이 메서드 역시 하위 뷰들에서도 연쇄적으로 호출 됨)
viewDidLayoutSubviews()
- 레이아웃이 결정되고 나서 아래와 같은 일을 수행하고자 할 때 이 메서드를 override하여 사용
- 다른 뷰들의 컨텐트 업데이트
- 뷰들의 크기나 위치를 최종적으로 조정
- 테이블의 데이터를 reload
'iOS 기본 (swift)' 카테고리의 다른 글
[iOS - swift] Scale To Fill / Aspect Fit / Aspect Fill (2) | 2020.11.01 |
---|---|
[iOS - swift] UDID, UUID (0) | 2020.11.01 |
[iOS - swift] 18. setNeedsLayout, layoutIfNeeded (run loop, update cycle개념) (0) | 2020.09.19 |
[iOS - swift] 17. status bar 글씨 색깔 지정하기 (0) | 2020.08.16 |
[iOS - swift] 16. notificationCenter (1) | 2020.07.11 |
Comments