在 ProgressView SwiftUI 中对流程栏进行动画处理

cja*_*jay 8 ios swift swiftui

我正在尝试为 SwiftUI 进度视图中的进度条设置动画。我发现了一些可以帮助解决这个问题的东西,但是在 UIProgressView 中,我试图用 SwiftUI 来完成这个任务。目前的方法:

ProgressView(value: 0.25).animation(Animation.easeInOut(duration: 3))
Run Code Online (Sandbox Code Playgroud)

问题是整个视图都是动画的。我只想要进度条动画。

cja*_*jay 0

我找到了一个解决方案

@State private var counter = 0.0

var body: some View {
    ProgressView(value: counter, total: 100.0)
        .onAppear {
            self.runCounter(counter: self.$counter, start: 0.0, end: 50.0, speed: 0.05)
        }
}

func runCounter(counter: Binding<Double>, start: Double, end: Double, speed: Double) {
    counter.wrappedValue = start

    Timer.scheduledTimer(withTimeInterval: speed, repeats: true) { timer in
        counter.wrappedValue += 1.0
        if counter.wrappedValue == end {
            timer.invalidate()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)