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

标签 ios objective-c cocoa-touch loading uiactivityindicatorview

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

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

我已经在指示器 View 、 View Controller 和窗口上尝试了 setNeedsDisplay,但它仍然会在显示指示器之前加载图片,这当然对我来说毫无用处。

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

建议?

最佳答案

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

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

这是一个例子:

//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 - UIActivityIndi​​catorView 直到加载完成后才显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4097961/

相关文章:

ios - 带有可重用单元格的 ImageView

objective-c - 调试过度释放的对象,NSZombie 的问题

ios - 使用 formSheet 呈现样式调整已呈现的模态视图 Controller 的大小

ios - 如何将推送通知发送到 iOS 设备上的 Web 应用程序?

ios - 当 ViewController 可能实现或不实现协议(protocol)时,在 UIViewController 的 viewDidLoad 上调用协议(protocol)函数

ios - 在 IOS 的 UITableView 中选择一个单元格时,表格单元格边框可见

iphone - 在 Html 中嵌入图像并在 UIWebView 中加载

ios - 在 iOS 中获取特定网站 URL 的缩略图和标题?

ios - 无法在 swiftUI 的剪辑形状中使用旋转效果

iPhone 模拟器和 UITextField 的 "DONE"键盘按钮