iOS设置正在处理图像时的进度条值

我有一个应用程序处理使用Quartz的几个图像,我想有一个UIProgressView每个动作后更改。 (例如0.0 0.2 0.4 0.6 0.8 1.0)

问题是,当我的图像正在被处理时,UI被完全锁住了,并且只有在所有的过程完成后才会改变值(意味着它不经过子步骤就会到1.0)

你们有没有遇到过这个?

伪:

for(uint i=0;i<5;i++){ // Execute some Quartz based action here, such as CGContextDrawTiledImage etc... myProgress.progress = (i+1) * 0.2; } 

所以实际上,在每个动作完成后,进度条不会改变,最终只会改变一次到1.0。 将不胜感激您的反馈或经验或这一点。

谢谢
夏嘉曦。

您需要在单独的线程中更新您的资产或进度条,以便两者可以并行更新。

看看[NSThread detachNewThreadSelector:selector toTarget:target withObject:object];

使你的进步成为一个成员variables

  [NSThread detachNewThreadSelector:@selector(updateFilterProgress) toTarget:self withObject:nil]; prgLoader.progress = x; - (void) updateFilterProgress{ NSAutoreleasePool *pool = [NSAutoreleasePool new]; while ([prgLoader.progress floatValue] < 1.0f) //Keep this thread alive till done loading. You might want to include a way to escape (a BOOL flag) { GTMLoggerInfo(@"Updating progress to %f", [progress floatValue]); prgLoader.progress = [progress floatValue]; } [pool release]; }