我在当前导航到 View Controller 上有一个按钮,连接到一个 IBAction。
在 IBAction 中,我像往常一样创建一个 UIActivityIndicatorView,使用 [self.view addSubView],然后加载一些图片。
我已经在指示器 View 、 View Controller 和窗口上尝试了 setNeedsDisplay,但它仍然会在显示指示器之前加载图片,这当然对我来说毫无用处。
所以我正在寻找一种方法来强制即时重绘(当我稍微考虑一下它不太可能起作用时),或者一种在指示器出现后加载图片的方法,或者一种方法启动一个单独的线程或类似的线程来开始动画/显示指示器,或者将指示器放在一个单独的 View Controller 中并以某种方式强制它在继续图片加载之前添加/显示自己。
建议?
最佳答案
在这种情况下,我所做的是生成一个新线程,在后台加载内容时释放主线程来处理 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];
}
关于ios - UIActivityIndicatorView 直到加载完成后才显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4097961/