8

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

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

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

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

建议?

4

1 回答 1

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];
}
于 2010-11-04T15:02:12.033 回答