1 视图基础
2 分钟阅读
原文链接: https://developer.apple.com/documentation/swiftui/view-fundamentals
1 视图基础
用视图层级定义应用的视觉元素。
概述
视图是你用来声明应用用户界面的构建单元。每个视图都包含一段描述,说明在给定状态下要显示什么。应用中用户能看到的每一处内容都源自视图中的描述,任何遵循 View 协议的类型都可以在应用中充当视图。

在视图的 body 计算属性中,把 SwiftUI 提供的内置视图与你创建的其他自定义视图组合起来,就构成一个自定义视图。你可以用 SwiftUI 提供的视图修饰符配置视图,也可以用 ViewModifier 协议和 modifier(_:) 方法定义自己的视图修饰符。
创建视图
- 声明自定义视图 —— 定义视图并把它们组装成视图层级。
- Wishlist:在 SwiftUI 应用中规划旅行 —— 构建一个旅行规划应用,把行程整理进合集并跟踪活动完成情况。
- View —— 表示应用用户界面中一部分的类型,并提供用来配置视图的修饰符。
- ContentBuilder —— 从闭包构造视图和其他内容类型的自定义参数特性。
- ViewBuilder —— 从闭包构造视图的自定义参数特性。
修改视图
- 配置视图 —— 通过应用视图修饰符调整视图的特征。
- 减少视图修饰符的维护量 —— 把经常复用的视图修饰符打包成自定义视图修饰符。
- modifier(_:) —— 把一个修饰符应用到视图并返回新视图。
- ViewModifier —— 你应用到视图或另一个视图修饰符上、产生原值不同版本的修饰符。
- EmptyModifier —— 空的(恒等)修饰符,在开发期间用于在编译期切换修饰符。
- ModifiedContent —— 应用了修饰符的值。
- EnvironmentalModifier —— 必须先在某环境中解析为具体修饰符才能使用的修饰符。
- ManipulableModifier
- ManipulableResponderModifier
- ManipulableTransformBindingModifier
- ManipulationGeometryModifier
- ManipulationGestureModifier
- ManipulationUsingGestureStateModifier
- Manipulable —— 各种可操控相关类型的命名空间。
响应视图生命周期更新
- onAppear(perform:) —— 添加在该视图出现之前要执行的动作。
- onDisappear(perform:) —— 添加在该视图消失之后要执行的动作。
分配任务
- task(id:name:executorPreference:priority:file:line:_:) —— 添加在该视图出现之前、或某个指定值变化时要执行的任务。
- task(id:name:priority:file:line:_:) —— 添加在该视图出现之前、或某个指定值变化时要执行的任务。
- task(name:executorPreference:priority:file:line:action:) —— 添加在该视图出现之前要执行的异步任务。
- task(name:priority:file:line:_:) —— 添加在该视图出现之前要执行的异步任务。
管理视图层级
- id(_:) —— 把视图的身份绑定到给定的代理值。
- tag(_:includeOptional:) —— 设置该视图的唯一标签值。
- equatable() —— 当新值与旧值相同时,阻止视图更新其子视图。
支持的内容类型
- EmptyContent —— 不含任何内容的内容。
- TupleContent —— 由一组内容元组创建、被视为同级的内容。
支持的视图类型
- AnyView —— 类型擦除的视图。
- EmptyView —— 不含任何内容的视图。
- EquatableView —— 把自身与其之前的值比较、并在新值与旧值相同时阻止子视图更新的视图类型。
- SubscriptionView —— 带动作订阅某个发布者的视图。
- TupleView —— 由 Swift 的视图值元组创建的视图。