循环很多时,进度条不会更新

时间:2017-01-14 13:23:10

标签: swift progress-bar

我有一个进度条,应该在每一步后更新。步骤可以很高,比方说50.000。输入此大号时,进度条在iPhone计算时不执行任何操作。 iPhone完成后,进度条立即达到1.0(最大)进度。这是我的代码:

    for x in 1...timesToSimulate{
        var progress: Float = Float(x) / Float(timesToStimulate)
        progressBarView.setProgress(progress, animated: true)
}

计算并不难,但我做错了但看不清楚。你知道它是什么吗?

1 个答案:

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