2016-07-05 39 views
0

我正在对图像进行分析处理。当我遍历所有像素时,我想获得关于进度的反馈。这里是我的代码:UIProgressView只更新值而不是UI

 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。 打印结果正在更新,但条形图不会在视觉上更改。它只是在最后更新。 感谢您的任何帮助先进的!

回答

0

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

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