2016-07-05 7 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を読んでください。

関連する問題