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)
    }
}