UIActivityIndi​​catorView直到加载完成后才显示

时间:2010-11-04 14:59:28

标签: ios objective-c cocoa-touch loading uiactivityindicatorview

我在当前导航到viewcontroller上有一个按钮,连接到IBAction。

在IBAction中,我像往常一样使用[self.view addSubView]创建一个UIActivityIndi​​catorView,然后加载一些图片。

我在指标视图,视图控制器和窗口上尝试了setNeedsDisplay,但它仍然在显示指示符之前加载图片,这对我来说当然没用。

所以我正在寻找一种方法来强制进行即时重绘(当我想更多关于它不太可能工作时),或者在指示符出现后加载图片的方法,或者某种方式启动一个单独的线程或类似的开始动画/显示指标,或将指标放在一个单独的视图控制器中,并以某种方式强制它添加/显示自己,然后再进行图片加载。

建议?

1 个答案:

答案 0 :(得分:18)

在这种情况下我做的是生成一个新线程,它释放主线程以处理UI交互,同时在后台加载内容。

首先显示UIActivityIndicatorView,然后生成一个加载图像的新线程,然后在新线程中执行的方法的最后一行,隐藏UIActivityIndicatorView

以下是一个例子:

//do stuff...
[activityIndicatorView startAnimating];
[NSThread detachNewThreadSelector:@selector(loadImages) toTarget:self withObject:nil];

loadImages方法中:

- (void) loadImages {
   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
   //load images...
   [activityIndicatorView performSelectorOnMainThread:@selector(stopAnimating)];
   [pool drain];
}