iOS/WWDC

[iOS/WWDC23] viewIsAppearing() 알아보기

김졀니 2024. 3. 24. 23:38

WWDC23에서 발표된 새로운 생명주기 메서드에 대해 알아봅시다.
23년에 발표되긴 했지만 iOS 13부터 적용이 가능하다.

 


viewIsAppearing()viewWillAppear()가 호출된 후, viewDidAppear() 호출 전에 호출되는 메서드이다.
viewWillaAppear()에서는 아직 뷰가 올라오기 전이고, viewIsAppearing()에서는 뷰가 뷰의 계층 구조 상에 올라온 후 호출된다.
때문에 viewIsAppearing()에서는 뷰의 크기나 초기 기하구조를 다루는 코드를 에서 수행할 수 있다.

 

 

그렇다면 viewDidAppear()시점에 수행해도 되는 것이 아닌가?
viewDidAppear()도 사용자의 눈에 뷰가 보이기 전에 뷰를 다룰 수 있지만 사용자에게 보여지기 직전이기 때문에 작업에 따라 늦은 타이밍이 될 수도 있다.
그렇기 때문에 뷰가 올라와 있고, 사용자에게 보이기 전이며 뷰의 크기를 다룬다거나 UI 업데이트가 필요하다면 viewIsAppearing()시점에 처리할 수 있을 것이다.

 


위의 사진을 보면 layout을 다루는 메서드 중 viewWillLayoutSubviews()가 있는데 여기에서 작업을 할 수도 있는 것이 아닐까?
일단 viewWillLayoutSubviews()layoutSubviews()가 호출되기 전에 호출되는 메서드이다.
layoutSubViews()는 뷰가 전환된 후에도 여러번 호출이 되는 메서드이다. 뷰의 업데이트가 필요하다고 시스템이 판단할 시 자동으로 호출된다.
반면에 viewIsAppearing()은 뷰가 전환될 때 한 번 호출되는 메서드이기 때문에 초기에 한 번 적용 해야하는 경우에 사용할 수 있다.

 

 

 

 

 

https://developer.apple.com/documentation/uikit/uiviewcontroller/4195485-viewisappearing