SwiftUI View 生命周期

10 min read

SwiftUI 中 View 生命周期主要包括以下几个部分:

  1. 初始化 - initView

View 初始化时,执行一次,用于创建自身的内容。

public var body: some View {
    initView()
}
  1. 布局 - layoutSubviews

View 的 frame 属性变化时,执行一次或多次,用于设置子 View 的位置和大小。

public var body: some View {
    initView()
        .background(Color.white)
        .cornerRadius(10)
        .padding()
        .layoutSubviews()
}
  1. 视图即将显示 - viewWillAppear

View 即将显示在屏幕上时,执行一次。

public var body: some View {
    initView()
        .background(Color.white)
        .cornerRadius(10)
        .padding()
        .layoutSubviews()
        .onAppear(perform: viewWillAppear)
}
  1. 视图已经显示 - viewDidAppear

View 已经显示在屏幕上时,执行一次。

public var body: some View {
    initView()
        .background(Color.white)
        .cornerRadius(10)
        .padding()
        .layoutSubviews()
        .onAppear(perform: viewWillAppear)
        .onAppear(perform: viewDidAppear)
}
  1. 视图即将消失 - viewWillDisappear

View 即将从屏幕上消失时,执行一次。

public var body: some View {
    initView()
        .background(Color.white)
        .cornerRadius(10)
        .padding()
        .layoutSubviews()
        .onAppear(perform: viewWillAppear)
        .onAppear(perform: viewDidAppear)
        .onDisappear(perform: viewWillDisappear)
}
  1. 视图已经消失 - 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)
}