我有一个进度条,应该在每一步后更新。步骤可以很高,比方说50.000。输入此大号时,进度条在iPhone计算时不执行任何操作。 iPhone完成后,进度条立即达到1.0(最大)进度。这是我的代码:
for x in 1...timesToSimulate{
var progress: Float = Float(x) / Float(timesToStimulate)
progressBarView.setProgress(progress, animated: true)
}
计算并不难,但我做错了但看不清楚。你知道它是什么吗?
答案 0 :(得分:-1)
原因可能是您所有的计算都是在主要步骤上完成的。 UI仅在函数返回后更新(此时您已达到最大进度)。如果要逐步更新进度条,则需要异步更改进度。
例如:
for x in 1...timesToSimulate{
let progress: Float = Float(x) / Float(timesToSimulate)
DispatchQueue.main.asyncAfter(deadline: .now() + Double(x) * 0.1) {
self.progressBarView.setProgress(progress, animated: true)
}
}