这里每天分享一个 iOS 的新知识,快来关注我吧
前言
我们对 UIViewController
已经非常非常熟悉了,它有一系列的生命周期方法,比如 loadView
、viewDidLoad
、viewWillAppear
、viewDidAppear
等等。
但是 Apple 在今年新版本的 Xcode 15 中添加了新的 UIViewController
生命周期回调 viewIsAppearing
,而且 iOS 13 以上就可以用了,因此猜测在 iOS 13 的时候就已经有这个方法了,只不过之前一直是内部私有的,被苹果隐藏了 5 年,到了今年的 iOS 17 才公开出来。
viewIsAppearing
viewIsAppearing
方法在 viewWillAppear
和 viewDidAppear
之间调用。
主要区别在于,它是在 view
添加到层次结构中,但还未显示在屏幕上时调用的。这个方法调用的时候视图控制器的视图已经布局好了,因此你可以在这个方法下拿到正确的 view
属性。
swift
override func viewIsAppearing(_ animated: Bool) {
super.viewIsAppearing(animated)
}
有什么用
1、布局子视图
因为在这个方法调用时,控制器的 view
已经设置好了 frame
,所以可以做一些子视图布局的工作。
但是要注意,这个方法在整个控制器生命周期内可能会调用多次,比如 push
到下一个控制器再回来。
2、刷新 UI
如果每次视图出现时需要刷新 UI,使用这个方法是最好的。比如你的页面需要记住当前的滚动位置,则可以在这个方法下设置页面滚动,以便于在用户看到 UI 之前设置完成。
3、traitCollection
在这个方法调用时,控制器的 traitCollection
也已经准备好了,可以在这时放心使用,比如获取布局方向、日夜间模式、渲染比例等等。
这里每天分享一个 iOS 的新知识,快来关注我吧
本文同步自微信公众号 "iOS新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!