0

画像の解析処理を行っています。すべてのピクセルを実行する際に、進捗状況についてフィードバックが必要です。これが私のコードです:

       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 を呼び出しました。印刷結果は更新されていますが、バーは視覚的に変更されていません。最後だけ更新です。高度なヘルプをありがとう!!!!

4

1 に答える 1

0

UIKit はシングル スレッドであり、メイン スレッドからのみ実行することを意図しています。メインスレッドで作業を実行するループがある場合、UIKit は、コードの実行が終了してメソッドが戻るまで更新されません。

進行状況を表示するには、バックグラウンド スレッドで作業を実行し、メイン スレッドで UIKit を更新する必要があります。同時実行プログラミング ガイドをお読みください。

于 2016-07-05T20:26:01.700 に答える