Scene
应用程序用户界面的一部分,其生命周期由系统管理
protocol Scene
使用教程
您可以通过在应用程序主体中组合一个或多个符合Scene协议的实例来创建应用程序。您可以使用SwiftUI提供的原始场景(例如WindowGroup)以及由其他场景组成的自定义场景。要创建自定义场景,请声明一个符合Scene协议的类型。实现所需的主体计算属性并为您的自定义场景提供内容:
struct MyScene: Scene {
var body: some Scene {
WindowGroup {
MyRootView()
}
}
}
场景充当要显示给用户的视图层次结构的容器。系统会根据平台的状态并取决于应用程序的当前状态,决定何时以及如何在用户界面中呈现视图层次结构。例如,对于上面显示的窗口组,系统允许用户在macOS和iPadOS等平台上创建或删除包含MyRootView的窗口。在其他平台上,相同的视图层次结构在活动时可能会占用整个显示。
从场景或其视图之一中读取scenePhase环境值,以检查场景是否处于活动状态或处于其他状态。您可以使用Environment属性创建一个包含场景阶段的属性,该场景阶段是ScenePhase枚举中的值之一:
struct MyScene: Scene {
@Environment(\.scenePhase) private var scenePhase
// ...
}
Scene协议提供了场景修饰符,定义为具有默认实现的协议方法,可用于配置场景。例如,可以使用onChange(of:perform :)修饰符在值更改时触发操作。当窗口组中的所有场景都移至后台时,以下代码清空缓存:
struct MyScene: Scene {
@Environment(\.scenePhase) private var scenePhase
@StateObject private var cache = DataCache()
var body: some Scene {
WindowGroup {
MyRootView()
}
.onChange(of: scenePhase) { newScenePhase in
if newScenePhase == .background {
cache.empty()
}
}
}
}
推荐
基础文章推荐
经典教程推荐
技术源码推荐
推荐文章
CoreData篇
Combine篇
TextField篇
- 《SwiftUI 一篇文章全面掌握TextField文本框 (教程和全部源码)》
- 《SwiftUI实战之TextField风格自定义与formatters》
- 《SwiftUI实战之TextField如何给键盘增加个返回按钮(隐藏键盘)》
- 《SwiftUI 当键盘出现时避免TextField被遮挡自动向上移动》
- 《SwiftUI实战之TextField如何给键盘增加个返回按钮(隐藏键盘)》
JSON文件篇
一篇文章系列
- SwiftUI一篇文章全面掌握List(教程和源码)
- 《SwiftUI 一篇文章全面掌握TextField文本框 (教程和全部源码)》
- SwiftUI一篇文章全面掌握Picker,解决数据选择(教程和源码)
- SwiftUI一篇文章全面掌握Form(教程和源码)
- SwiftUI Color 颜色一篇文章全解决
技术交流
QQ:3365059189
SwiftUI技术交流QQ群:518696470
- 请关注我的专栏icloudend, SwiftUI教程与源码
https://www.jianshu.com/c/7b3e3b671970