Xcode 15 中的控制器里新增了viewIsAppearing 方法

这里每天分享一个 iOS 的新知识,快来关注我吧

前言

我们对 UIViewController 已经非常非常熟悉了,它有一系列的生命周期方法,比如 loadViewviewDidLoadviewWillAppearviewDidAppear 等等。

但是 Apple 在今年新版本的 Xcode 15 中添加了新的 UIViewController 生命周期回调 viewIsAppearing,而且 iOS 13 以上就可以用了,因此猜测在 iOS 13 的时候就已经有这个方法了,只不过之前一直是内部私有的,被苹果隐藏了 5 年,到了今年的 iOS 17 才公开出来。

viewIsAppearing

viewIsAppearing 方法在 viewWillAppearviewDidAppear 之间调用。

主要区别在于,它是在 view 添加到层次结构中,但还未显示在屏幕上时调用的。这个方法调用的时候视图控制器的视图已经布局好了,因此你可以在这个方法下拿到正确的 view 属性。

swift 复制代码
override func viewIsAppearing(_ animated: Bool) {
    super.viewIsAppearing(animated)
}

有什么用

1、布局子视图

因为在这个方法调用时,控制器的 view 已经设置好了 frame,所以可以做一些子视图布局的工作。

但是要注意,这个方法在整个控制器生命周期内可能会调用多次,比如 push 到下一个控制器再回来。

2、刷新 UI

如果每次视图出现时需要刷新 UI,使用这个方法是最好的。比如你的页面需要记住当前的滚动位置,则可以在这个方法下设置页面滚动,以便于在用户看到 UI 之前设置完成。

3、traitCollection

在这个方法调用时,控制器的 traitCollection 也已经准备好了,可以在这时放心使用,比如获取布局方向、日夜间模式、渲染比例等等。

这里每天分享一个 iOS 的新知识,快来关注我吧

本文同步自微信公众号 "iOS新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
2501_9159090617 小时前
Charles 抓不到包怎么办?iOS 调试过程中如何判断请求路径
android·ios·小程序·https·uni-app·iphone·webview
2501_9160074717 小时前
iOS和iPadOS文件管理系统全面解析与使用指南
android·ios·小程序·https·uni-app·iphone·webview
core51218 小时前
使用 `ms-swift` 微调 Qwen3-VL-2B 详细指南
lora·微调·swift·qwen·qwen3·vl
core51219 小时前
Swift SFT Qwen-VL LoRA 微调指令详解
lora·微调·swift·qwen·vl
2501_915921431 天前
iOS App 开发阶段性能优化,观察 CPU、内存和日志变化
android·ios·性能优化·小程序·uni-app·iphone·webview
游戏开发爱好者81 天前
在 iOS 开发、测试与上架过程中 如何做证书管理
android·ios·小程序·https·uni-app·iphone·webview
ii_best1 天前
按键精灵安卓/IOS手机助手 × 手机按键 App:1 分钟搞定设备连接(超详细教程)
android·ios·智能手机·自动化·编辑器
2501_916007471 天前
在没有 Mac 的情况下完成 iOS 应用上架 App Store
android·macos·ios·小程序·uni-app·iphone·webview
TheNextByte11 天前
iPhone存储空间已满?如何轻松释放iPhone空间?
android·ios·iphone
—Qeyser1 天前
Flutter 颜色完全指南
android·flutter·ios