在循环期间更新 UIProgressBar 进度
Posted
技术标签:
【中文标题】在循环期间更新 UIProgressBar 进度【英文标题】:updating UIProgressBar progress during loop 【发布时间】:2014-07-11 15:45:59 【问题描述】:我找不到关于如何在迭代循环时更新 UIProgressbar 进度的明确答案,例如:
for (int i=0;i<items.count;i++)
Object *new = [Object new];
new.xxx = @"";
new...
...
float progress = (i+1) / (float)items.count;
progressBar.progress = progress;
[self save];
如何在单独的线程上更新 UI?
【问题讨论】:
在后台线程上执行长时间运行的进程,并在主线程上更新 UI。这是对 Grand Central Dispatch (GCD) 的完美使用。 【参考方案1】:在后台线程上运行循环,并在主线程上更新进度条:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^
for (int i=0;i<items.count;i++)
Object *new = [Object new];
new.xxx = @"";
new...
...
float progress = (i+1) / (float)items.count;
dispatch_async(dispatch_get_main_queue(), ^
progressBar.progress = progress;
);
[self save];
);
【讨论】:
以上是关于在循环期间更新 UIProgressBar 进度的主要内容,如果未能解决你的问题,请参考以下文章
将 UIProgressBar 放在 UIToolbar 上
UIProgressBar:如何根据背景颜色更改 UILabel 颜色