View — ProgressView

SwiftUI 中的 ProgressView 是一个用于显示进度或状态的视图组件,它能够以非常简单的方式告知用户当前任务的进度。它支持两种常见的模式:


1. 不确定进度(Indeterminate Progress) #

如果你的任务进度无法准确量化,只需显示一个旋转的活动指示器,这时只需要创建一个空的 ProgressView:

ProgressView()

这种形式常用于加载状态或等待网络响应的场景,系统会自动展示一个圆形的旋转指示器。


2. 确定进度(Determinate Progress) #

当你能够提供任务进度(通常以一个从 0.0 到 1.0 的数值表示)时,可以使用带有 value 和 total 参数的构造函数:

ProgressView("Loading...", value: currentValue, total: totalValue)

例如,如果你正在下载文件,可以这样写:

ProgressView("Downloading...", value: 50, total: 100)

这会显示一个带有标签的进度条,表示任务已经完成了 50%。


3. 自定义进度样式 #

ProgressView 支持通过修饰符 .progressViewStyle() 来定制其外观。目前系统内置了几种样式,例如:

  • CircularProgressViewStyle:圆形旋转指示器(默认样式)。
  • LinearProgressViewStyle:线性进度条样式,常用于显示下载或加载进度。

示例代码:

// 线性进度条样式
ProgressView("Processing...", value: 0.3, total: 1.0)
    .progressViewStyle(LinearProgressViewStyle())

你也可以自定义样式,实现符合你 App 视觉风格的进度视图。


4. 使用场景和注意事项 #

  • 显示加载状态:当你需要表示数据加载、网络请求或其他后台任务时,使用不确定进度的 ProgressView 是一个直观的选择。
  • 展示任务进度:对于下载、上传或任何进度可量化的任务,确定进度模式能为用户提供更精确的反馈。
  • 动态更新:当任务进展时,可以动态修改传入的 progress 值,界面会自动刷新进度显示。
  • 与其他视图组合:ProgressView 可与其他 SwiftUI 组件组合使用,例如放在 VStack 或 ZStack 中以实现更复杂的用户界面布局。

总的来说,SwiftUI 的 ProgressView 提供了非常简洁且灵活的方式来展示任务的进度和加载状态。无论是简单的活动指示器还是带有标签的进度条,都能通过少量代码迅速集成到你的应用中,从而改善用户体验。

本文共 766 字,创建于 Feb 22, 2025
相关标签: Xcode, SwiftUI