SwiftUI 中 View 生命周期主要包括以下几个部分:
- 初始化 - initView
View 初始化时,执行一次,用于创建自身的内容。
public var body: some View {
initView()
}
- 布局 - layoutSubviews
View 的 frame 属性变化时,执行一次或多次,用于设置子 View 的位置和大小。
public var body: some View {
initView()
.background(Color.white)
.cornerRadius(10)
.padding()
.layoutSubviews()
}
- 视图即将显示 - viewWillAppear
View 即将显示在屏幕上时,执行一次。
public var body: some View {
initView()
.background(Color.white)
.cornerRadius(10)
.padding()
.layoutSubviews()
.onAppear(perform: viewWillAppear)
}
- 视图已经显示 - viewDidAppear
View 已经显示在屏幕上时,执行一次。
public var body: some View {
initView()
.background(Color.white)
.cornerRadius(10)
.padding()
.layoutSubviews()
.onAppear(perform: viewWillAppear)
.onAppear(perform: viewDidAppear)
}
- 视图即将消失 - viewWillDisappear
View 即将从屏幕上消失时,执行一次。
public var body: some View {
initView()
.background(Color.white)
.cornerRadius(10)
.padding()
.layoutSubviews()
.onAppear(perform: viewWillAppear)
.onAppear(perform: viewDidAppear)
.onDisappear(perform: viewWillDisappear)
}
- 视图已经消失 - viewDidDisappear
View 已经从屏幕上消失时,执行一次。
public var body: some View {
initView()
.background(Color.white)
.cornerRadius(10)
.padding()
.layoutSubviews()
.onAppear(perform: viewWillAppear)
.onAppear(perform: viewDidAppear)
.onDisappear(perform: viewWillDisappear)
.onDisappear(perform: viewDidDisappear)
}