UIProgressView仅更新值而不是UI

时间:2016-07-05 20:05:03

标签: ios iphone swift uiprogressview uiprogressbar

我正在对图像进行分析处理。当我浏览所有像素时,我希望获得有关进度的反馈。这是我的代码:

       for _ in 0 ..< height {
            for _ in 0 ..< width {
                analyzeImage(currentPixel)
                currentPixel = currentPixel.successor()
            }
            updateProgress()
        }

func updateProgress() {
    self.fractionalProgress += self.fractionalRatio
    if (Int(self.fractionalProgress / self.fractionalRatio) % 20) == 0 {
        self.progressBar.progress = self.fractionalProgress
        print(self.progressBar.progress)
    }
}

我在嵌套for循环中调用了updateProgress。 打印结果正在更新,但条形图不会在视觉上更改。它只在最后更新。 感谢先进的任何帮助!!!!

1 个答案:

答案 0 :(得分:0)

UIKit是单线程的,仅用于从主线程运行。如果你有一个循环在主线程上执行工作,那么UIKit将不会更新,直到你的代码运行完毕并且你的方法已经返回。

为了显示进度,您需要在后台线程上执行工作并在主线程上更新UIKit。阅读Concurrency Programming Guide