티스토리 뷰
view가 화면에 나타날 준비를 하는 과정
1. view의 init(coder:) 메서드를 사용하여 각 뷰를 생성
2. action 및 outlet 연결
3. 각각의 view와 viewcontroller의 awakFromNib() 메서드 호출
4. view계층을 viewcontroller의 view객체에 할당
5. viewDidLoad() 호출
로드 타임에 viewController를 사용할 수 있게 하는데 필요한 설정단계를 한 번만 수행
위의 단계에서 화면에 나타날 때마다 수행되어야 하는 작업은 하면 안됨(애니메이션, 뷰 업데이트 등)
화면이 뜰 때 단계별로 함수를 print해보면 위와 같이 출력 되는 것을 볼 수 있음
UIKit은 view가 화면에 표시되면 viewcontroller에게 알려주고 view의 의 레이아웃을 현재 환경에 맞게 업데이트함
1. 전환을 시작할 때 viewWillAppear(_ :) 호출
view를 view 계층에 추가, trait collections(view의 사이즈나 display 비율, layout 방향 등)를 갱신
superview의 사이즈와 위치를 포함하여 뷰의 geomery 갱신(superview에 의해 배치)
2. layout margins와 safe area를 갱신 및 필요에 따라
viewLayoutMarginDidChange() 와viewSafeAreaInsetsDidChange()를 호출
3. viewIsAppearing(_:)를 호출하여 뷰 컨트롤러의 뷰가 화면에 표시되고 있음을 알림
-------------view의 bound 변경 및 재배치 (4, 5, 6 사이 오토레이아웃 동작) --------------------------------
4. viewWillLayoutSubview() 호출
5. view 계층의 레이아웃을 갱신
6. viewDidLayoutSubviews 호출
------------------------------------------------------------------------------------------------------------------------
7. 화면에 view들을 표시
8. 애니메이션이 완료된 후 viewDidAppear 호출
viewController 관련 메서드
1. viewDidLoad
viewcontroller의 view가 메모리에 로드된 후 호출
nib 파일에서 로드되었든 loadView() 메서드에서 프로그래밍 방식으로 생성되었는지에 관계없이 호출
주로 초기화 함수를 작성
2. viewWillAppear
view가 superview에 배치되고 traits가 갱신됨
view의 표시와 관련된 작업을 수행할 수 있음(뷰의 방향 또는 스타일 / 상태표시줄 방향 또는 스타일) 등
viewDidLoad와 달리 화면이 보여질 때 여러번 호출되며 viewDidAppear와 한쌍으로 동작
pop over된 경우 다시 원래 화면으로 돌아왔을 때 다시 불리지 않음
3. viewIsAppearing(WWDC23에서 소개. iOS13부터 적용)
view가 보일때 UI를 업데이트 하기 위한 최적의 장소
view의 계층구조, geometry 등이 필요한 작업일 때는 이곳에서 작업
그 외 애니메이션과 함께 추가할 수 있는 transition coordinator 사용, notification center 등록 등은 viewWillAppear
viewWillAppear는 view가 계층구조에 추가되고 trait이 갱신되는 곳
-> 이곳에서 UI를 갱신하면 문제가 생길 가능성이 있음
viewDidAppear는 화면에 보여지는 transition animation이후에 호출되기 됨
-> UI가 업데이트 되는 것이 늦는 것처럼 보일 수 있음
4. viewDidAppear
화면이 나타난 직후에 호출되며 view와 관련된 추가작업(애니메이션) 등이 이루어짐
5. viewWillDisappear
편집중 변경사항 커밋 또는 viewDidAppear에서 했던 것들(상태표시줄 방향, 스타일 등)을 되돌려 줌
6. viewDidDisappear
뷰가 사라지거나 숨겨지는 것 관련한 작업을 진행
notificationCenter 해제 등
'iOS > iOS 지식' 카테고리의 다른 글
[WWDC2022] Design protocol interfaces in Swift (1) | 2024.06.08 |
---|---|
[Swift] UserDefaults + PropertyWrapper (0) | 2024.05.26 |
[iOS] RenderingMode (Original Image & Template Image) (0) | 2024.05.19 |
[iOS] AppDelegate & SceneDelegate (0) | 2024.05.18 |
Swift5에 도입된 Result Type (0) | 2024.05.06 |
- Total
- Today
- Yesterday