SwiftUI 中的 ProgressView 可以很好地显示任务的进度。下面是一个示例,演示如何使用 ProgressView:
- 首先,我们需要定义一个任务,并跟踪其进度。
class Task: ObservableObject {
@Published var progress: Double = 0.0
func run() {
// 在此处运行任务,同时更新进度
for i in 0..<100 {
self.progress = Double(i) / 100.0
}
}
}
在这个示例中,我们创建了一个名为 Task 的类,并定义了一个 progress 属性,该属性是可观察对象。在 run 方法中,我们运行任务,并在每次迭代时更新进度。
- 然后,我们可以创建一个视图,以显示 ProgressView,并将其与任务的进度关联起来。
struct ContentView: View {
@ObservedObject var task = Task()
var body: some View {
VStack {
ProgressView(value: task.progress)
Button(action: { self.task.run() }, label: { Text("Start Task") })
}
}
}
在这个示例中,我们创建了一个 ContentView 视图,并将其与 Task 对象关联。在视图中,我们添加了一个 ProgressView,其进度值与任务的进度值相关联。我们还添加了一个 Start Task 按钮,以手动启动任务。
- 最后,我们可以将 ContentView 视图添加到 SceneDelegate.swift 文件中,以显示它。
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = UIHostingController(rootView: ContentView())
self.window = window
window.makeKeyAndVisible()
}
}
}
在这个示例中,我们只是将 ContentView 视图作为根视图控制器添加到了 UIWindow 中。现在,我们可以编译并运行应用程序,点击按钮查看进度条的效果。