扫码阅读
手机扫码阅读
【SwiftUI】视图的生命周期及运用
![](/theme/default/default/images/main/eye-open.png)
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
![](/theme/default/default/images/main/icon-link.png)
![](/theme/default/default/images/main/icon-jing.png)
程序员华仔
扫码关注公众号
SwiftUI视图生命周期摘要
本文继续探讨iOS编程中的重要概念——SwiftUI视图生命周期,区别于App生命周期,主要关注视图层面的生命周期事件。
UIKit视图生命周期
首先回顾UIKit框架中视图的生命周期,包括如下关键API接口:
- awakeFromNib
- viewDidLoad
- viewWillLayoutSubViews
- viewDidLayoutSubViews
- viewWillAppear
- viewDidAppear
- viewWillDisappear
- viewDidDisappear
- viewDidUnload
- didReceiveMemoryWarning
这些API接口方便开发者管理视图的生命周期。
SwiftUI视图生命周期
SwiftUI视图生命周期较为复杂,主要步骤包括初始化视图实例、注册数据依赖、调用body计算结果、onAppear、销毁实例和onDisappear。
onAppear和onDisappear的运用
介绍了SwiftUI中两个常用接口onAppear和onDisappear的使用,它们可以灵活运用在不同的视图层级和控件中,例如NavigationView、VStack、HStack等。
struct ContentView: View {
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: DetailView()) {
Text("Hello World")
}
}
}
.onAppear {
print("ContentView appeared!")
}
.onDisappear {
print("ContentView disappeared!")
}
}
}
上述代码展示了如何给ContentView视图绑定onAppear和onDisappear事件。
onAppear和onDisappear的嵌套
当多个控件嵌套使用onAppear和onDisappear时,它们的调用顺序与控件的排列顺序有关,先执行外层控件的Appear,然后是内层控件的Appear,Disappear事件则相反。
SwiftUI前后切换事件
SwiftUI中的前后台切换事件可以借助onChange来捕获,通过监听ScenePhase状态变化,实现App的前后台切换处理。
@main
struct TestSwiftUIDemo5App: App {
@Environment(\.scenePhase) var scenePhase
var body: some Scene {
WindowGroup {
ContentView()
}
.onChange(of: scenePhase) { newValue in
switch newValue {
case .active:
print("App is active")
case .inactive:
print("App is inactive")
case .background:
print("App is background")
@unknown default:
print("other unknown..")
}
}
}
}
通过捕获场景状态变化,可以管理App的活动状态。
文章最后鼓励读者关注作者以获取更多相关内容。
END
想要了解更多内容?
![](/theme/default/default/images/main/icon-link.png)
![](/theme/default/default/images/main/icon-jing.png)
程序员华仔
扫码关注公众号
程序员华仔的其他文章
加入社区微信群
与行业大咖零距离交流学习
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
软件研发质量管理体系建设
白皮书上线