viewIsAppearing(_:)
Notifies the view controller that the system is adding the view controller’s view to a view hierarchy.
WWDC23에서 업데이트된 UIViewController Life Cycle
viewWillAppear(_:)
가 호출된 후 View Controller의 view가 나타날 때 호출된다
viewWillAppear(_:)
와 다른 점은 viewIsAppearing(_:)
은 View Controller의 view가 view hierachy에 추가되고, superview가 View Controller의 view를 lays out 한 후에 실행된다는 것이다
시스템에 의해 이 메소드가 호출되는 타이밍에는, View Controller와 View 모두 Update 된 Trait Collection을 가지고 있고, View 는 정확한 Geometry 값을 가지고 있다 (프레임값 같은거 정확하게 들어있는지 실험 해보기)
View를 Displaying 하는 것과 관련된 작업들을 이 함수안에서 동작하게 할 수 있다.
문서에서 예로 드는 작업에는 View 혹은 View Controller의 Trait Collection 을 기반으로 View를 configure하거나 update할 때 또는 view가 appears 될 때 collection 혹은 table 을 스크롤할 때는 View 의 사이즈와 geometry 정보가 필요하기 때문에 View의 사이즈와 geometry를 기반으로 스크롤 포지션을 결정하고 싶을 때가 있다
위에서 예를 든 것처럼 View의 Size와 Geometry는 viewWillAppear(_:)
에서 결정되지 않기 때문에 viewIsAppearing(_:)
을 사용해야한다
그래서 viewWillAppear(_:)
를 사용해야 하는 경우는
순서적으로는 viewWillAppear(_:)
와 viewWillLayoutSubviews()
사이에 호출된다
시스템은 viewWillLayoutSubviews()
, viewDidLayoutSubviews()
를 view가 layoutSubviews()
를 실행할 때마다 호출하고, 이 동작은 transition간에, view가 visibile 하면 언제든 여러번 일어날 수 있지만
viewIsAppearing(_:)
은 단 한 번만 실행되고, view가 lay out 을 수행하지 않더라도 실행된다