扫码阅读
手机扫码阅读

【SwiftUI】视图的生命周期及运用

176 2024-07-13

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:【SwiftUI】视图的生命周期及运用
文章来源:
程序员华仔
扫码关注公众号
SwiftUI视图生命周期摘要

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

想要了解更多内容?

查看原文:【SwiftUI】视图的生命周期及运用
文章来源:
程序员华仔
扫码关注公众号