SwiftUI 如何使用 ProgressView 显示任务的进度?

6 min read

在 SwiftUI 中,可以使用 ProgressView 来显示任务的进度。下面是一个简单的示例:

struct ContentView: View {
    @State var progress: Double = 0.0
    
    var body: some View {
        VStack {
            ProgressView("任务进度", value: progress, total: 100)
                .padding(.all, 20)
            
            Button(action: startTask) {
                Text("开始任务")
            }
        }
    }
    
    func startTask() {
        // 模拟任务进度更新
        for i in 0...100 {
            DispatchQueue.main.asyncAfter(deadline: .now() + Double(i) * 0.03) {
                self.progress = Double(i)
            }
        }
    }
}

在代码中,我们首先创建了一个名为 progress@State 属性来表示任务的进度。在 body 中,我们创建了一个垂直的 VStack,其中包含一个 ProgressView 和一个 Button。在 ProgressView 中,我们使用了 valuetotal 参数来设置当前进度和总进度,同时还显示一个标题。

startTask 方法中,我们使用了 DispatchQueue.main.asyncAfter 来模拟任务的进度更新。在循环中,我们依次更新进度,每次更新都延迟一定的时间,以模拟真实的任务执行过程。

运行代码后,点击“开始任务”按钮即可看到进度条在不断更新,直到任务完成。