SwiftUI ProgressView
显示任务完成进度的视图
iOS 14.0+iPadOS 14.0+macOS 11.0+Mac Catalyst 14.0+tvOS 14.0+watchOS 7.0+
使用进度视图来显示任务正在朝着完成的方向前进。 进度视图可以显示确定(完成百分比)和不确定(进展与否)类型的进展。
通过初始化一个 ProgressView 来创建一个确定的进度视图,该 ProgressView 绑定到一个指示进度的数值和一个表示任务完成的总值。 默认情况下,进度为 0.0,总和为 1.0。
下面的示例使用 state 属性 progress 在确定的 ProgressView 中显示进度。 进度视图使用其默认总计 1.0,并且由于进度以初始值 0.5 开始,因此进度视图开始半完成。 进度视图下方的“更多”按钮允许用户以 5% 的增量增加进度:
@State private var progress = 0.5
VStack {
ProgressView(value: progress)
Button("More", action: { progress += 0.05 })
}
要创建不确定的进度视图,请使用不带进度值的初始化程序:
var body: some View {
ProgressView()
}
样式定制
您可以通过创建符合 ProgressViewStyle 协议的样式来自定义进度视图的外观和交互。 要为视图中的所有进度视图实例设置特定样式,请使用 progressViewStyle(_:) 修饰符。 在以下示例中,自定义样式为封闭 VStack 中的所有进度视图添加了深蓝色阴影:
struct ShadowedProgressViews: View {
var body: some View {
VStack {
ProgressView(value: 0.25)
ProgressView(value: 0.75)
}
.progressViewStyle(DarkBlueShadowProgressViewStyle())
}
}
struct DarkBlueShadowProgressViewStyle: ProgressViewStyle {
func makeBody(configuration: Configuration) -> some View {
ProgressView(configuration)
.shadow(color: Color(red: 0, green: 0, blue: 0.6),
radius: 4.0, x: 1.0, y: 2.0)
}
}