我有数学函数(大约是O ^(10 ^ 7)),在搜索结果时我必须显示进度。所以我有进度条。问题是,如何更新进度条? 我试过这样做:
self.progressBar.progress = 0.0;
self->progress = 0.0;
for (1..10^7) {
...
if (self.progressBar.progress < self.progress + 0.01) {
[self updateProgress];
}
}
[self updateProgress];
答案 0 :(得分:2)
在单独的线程中运行该操作。这是必须的。
您可以将操作分为几个步骤吗?你知道步数吗?
然后在每个步骤后将进度条更新为stepIndex/numSteps
百分比。
如果您无法将操作划分为多个步骤,但您知道操作需要多长时间,则可以将条形更新为timeSinceStart/expectedTime
百分比。使用NSTimer
进行定期更新。
如果您不能这样做,请仅使用UIActivityIndicator
,即显示应用程序正在执行某项操作的组件,但不显示该操作可以执行的时间。
答案 1 :(得分:1)
有时您必须这样做:
CFRunLoopRunInMode (CFRunLoopCopyCurrentMode(CFRunLoopGetCurrent()), 0, FALSE);
让UI更新进度条。
另外..你有动画:是的,并且在所有版本的iOS中都没有。
您可能需要在updateProgress方法中考虑:
if ([activityProgressView respondsToSelector:@selector(setProgress:animated:)]) {
[activityProgressView setProgress:0.5 animated:YES];
}
else {
[activityProgressView setProgress:0.5];
}
CFRunLoopRunInMode (CFRunLoopCopyCurrentMode(CFRunLoopGetCurrent()), 0, FALSE);