文档
#
SwiftUI | Apple Developer Documentation
SwiftUI 的大分类结构概述
#
以下是 SwiftUI 的大分类和对应用途的整体结构表:
分类 | 主要功能 | 组成模块 |
---|
视图(View) | 构建 UI 的基本单元,包括文本、图片、按钮和形状等。 | Text , Image , Button , Shape |
布局系统 | 控制视图的排列布局以及响应式处理。 | HStack , VStack , ZStack , Spacer |
数据驱动编程 | 使用数据绑定动态更新视图,响应数据状态变化。 | State , Binding , ObservedObject |
数据展示 | 展示大数据量内容,支持懒加载与滚动显示。 | List , ScrollView , Lazy* 系列 |
导航与容器 | 管理界面层次和页面跳转。 | NavigationView , TabView , Group |
表单与输入控件 | 数据输入及其交互组件。 | TextField , Toggle , Picker |
动画与事务 | 提供隐式和显式动画的支持,以及视图的过渡和协调动画。 | .animation , .transition , matchedEffect |
手势与交互 | 识别和处理用户的手势、滑动、拖拽等交互行为。 | .onTapGesture , .gesture , .swipeActions |
绘图与图形 | 绘制路径、形状和渐变效果。 | Path , Shape , Canvas , Gradients |
状态和生命周期管理 | 管理视图和应用的声明周期状态,监听生命周期事件。 | App , Scene , .onAppear , .onDisappear |
通知与事件处理 | 监听事件和系统通知,通过 Combine 框架实现响应式事件处理。 | .onReceive , NotificationCenter |
可访问性支持 | 提升应用的无障碍支持,适配 VoiceOver 等工具。 | .accessibilityLabel , .accessibilityHint |
资源管理 | 持久化本地化数据以及资源文件管理。 | @AppStorage , Image Assets , .ignoresSafeArea |
跨平台支持 | 支持 iOS、macOS、watchOS 和 tvOS 跨平台开发。 | PlatformModifiers , Universal Code |
接下来,我们将用细分表格列出各分类内的主要细分。
1. 视图 (View)
#
子模块 | 功能 |
---|
Text | 显示静态文本内容。 |
Image | 显示图片资源,用于界面装饰或标志。 |
Button | 提供按钮交互,触发用户行为逻辑。 |
Link | 点击后打开指定的 URL(适合深度链接及外部浏览)。 |
Shape | 绘制几何形状,如 Circle , Rectangle 等。 |
2. 布局系统
#
子模块 | 功能 |
---|
HStack | 将子视图水平排列。 |
VStack | 将子视图垂直排列。 |
ZStack | 将子视图按照层叠顺序排列,类似 Photoshop 图层。 |
Spacer | 在某些布局中创建可伸缩的空白,用于动态分配空间。 |
GeometryReader | 提供对父视图尺寸和位置的访问,支持响应式布局。 |
3. 数据驱动编程
#
子模块 | 作用 |
---|
@State | 用于存储和更新视图的局部状态。 |
@Binding | 父子视图之间共享状态,用于双向数据绑定。 |
@ObservedObject | 监听对象的变化(配合 @Published 来发布值变化)。 |
@EnvironmentObject | 用于跨视图共享数据,适合全局模型数据的共享。 |
@AppStorage | 存储简单键值对数据到 UserDefaults,用于持久化本地数据。 |
4. 数据展示
#
子模块 | 功能 |
---|
List | 显示动态或静态的垂直滚动列表内容,可结合 Navigation 使用。 |
ScrollView | 支持水平或垂直滚动的内容显示,包括组合内容。 |
LazyVStack | 垂直懒加载高效地渲染长列表视图。 |
LazyHStack | 水平懒加载布局,适合大量数据场景。 |
ForEach | 结合集合数据动态渲染视图内容。 |
5. 导航与容器
#
子模块 | 作用 |
---|
NavigationView | 包裹内容视图并支持导航功能。 |
NavigationLink | 指定点击后跳转的目标页面。 |
TabView | 创建多页面选项卡式的导航,适合大模块切换使用。 |
Group | 视图分组,不影响表现但为逻辑组织提供便利。 |
Divider | 添加一条分割线,可在不同布局元素之间使用。 |
6. 表单与输入控件
#
子模块 | 功能 |
---|
TextField | 文本输入控件,用于用户输入简单文本内容。 |
SecureField | 密码输入控件,隐藏字符显示。 |
Toggle | 开关控件(on/off 切换)。 |
Picker | 选择器控件,可用来选择单选或多选的列表值。 |
DatePicker | 日期或时间选择控件,支持多种格式。 |
Slider | 滑动条控件,用于数值选择或范围控制。 |
7. 动画与事务
#
子模块 | 作用 |
---|
.animation | 为视图变换添加隐式动画。 |
.withAnimation | 创建显式动画效果,结合异步操作使用。 |
.transition | 定义视图显示和消失时的过渡动画。 |
.matchedGeometryEffect | 跨视图共享动画效果,用于复杂视图间的流畅动画。 |
8. 手势与交互
#
子模块 | 功能 |
---|
.onTapGesture | 轻触时触发事件。 |
.onLongPressGesture | 长按时触发事件。 |
.gesture | 接收其他复杂手势的事件(如拖动或缩放)。 |
.swipeActions (iOS 15+) | 添加滑动操作(比如左滑删除)。 |
9. 绘图与图形
#
子模块 | 作用 |
---|
Path | 描述自定义路径,用于绘制复杂形状。 |
Shape | 内置简单形状,例如矩形(Rectangle)、圆形(Circle)。 |
Canvas (iOS 16+) | 类似于画布的绘制环境,可以自由绘制动态内容。 |
LinearGradient , RadialGradient | 定义线性或放射状渐变效果。 |
10. 状态与生命周期管理
#
子模块 | 作用 |
---|
App | 定义 SwiftUI 应用的入口类(替代传统的 UIApplicationDelegate )。 |
Scene | SwiftUI 的应用生命周期场景层级,支持多窗口等特性(如 WindowGroup )。 |
.onAppear | 在视图出现在屏幕时调用。 |
.onDisappear | 在视图从屏幕移除时调用。 |
11. SwiftUI 的设计理念总结
#
SwiftUI 的体系结构是模块化的,关注点独立,从视图构建到动画和多平台支持,解决了大量传统 UI 开发的繁琐问题。整个结构以“声明式编程”和“响应式绑定”为核心,通过对视图(View)、布局系统、数据驱动编程等功能的划分,使开发者能快速掌握并高效使用。