2016-07-05 36 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