我正在嘗試實現UIProgress視圖。每次在for循環中執行迭代結束時,我都會運行函數setProgress。進度設置是這樣的:UIProgressView setProgress
let progress: Float = Float(i + 1)/Float(list.count)
與進步的功能如下:
progressView.setProgress(progress, animated: true)
然而,不更新在每次循環的進度條。爲什麼是這樣?
我正在嘗試實現UIProgress視圖。每次在for循環中執行迭代結束時,我都會運行函數setProgress。進度設置是這樣的:UIProgressView setProgress
let progress: Float = Float(i + 1)/Float(list.count)
與進步的功能如下:
progressView.setProgress(progress, animated: true)
然而,不更新在每次循環的進度條。爲什麼是這樣?
你應該用異步方法
dispatch_async(dispatch_get_main_queue()) {
progressView.setProgress(progress, animated: true)
}
原因是? – enigma
出於某種原因,蘋果決定將一些操作降級到僅在主線程中工作。其中很多是人機界面(視圖)導向,但有些則不是。 –
您需要在後臺線程中運行你的循環,並使用僅主線程更新UI,在progressView的進展做它在你的主隊列你的情況。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0) {
for i in 0...list.count - 1 {
// Do your work here
// ...
// ...
dispatch_async(dispatch_get_main_queue()) {
progressView.setProgress(progress, animated: true)
}
}
}
你能分享循環func嗎? –
'因爲我在0 ... list.count - 1 {' – scribblelover27