viewIsAppearing 알아보기

이남준·2023년 6월 7일
0

WWDC23

목록 보기
1/1
post-thumbnail
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(_:)를 사용해야 하는 경우는

  • view transition 의 시작에 대한 콜백이 필요할 때
  • view 의 trait 과 관련없는 작업이 필요할 때

순서적으로는 viewWillAppear(_:)viewWillLayoutSubviews() 사이에 호출된다

시스템은 viewWillLayoutSubviews(), viewDidLayoutSubviews() 를 view가 layoutSubviews()를 실행할 때마다 호출하고, 이 동작은 transition간에, view가 visibile 하면 언제든 여러번 일어날 수 있지만
viewIsAppearing(_:)은 단 한 번만 실행되고, view가 lay out 을 수행하지 않더라도 실행된다

profile
iOS 개발자의 기록

0개의 댓글