根据文档[UIActivityItemProvider item]
在辅助线程上运行。这对于不锁定 UI 非常有用,但我发现它并不总是在item
显示时完成,例如在邮件撰写屏幕中。
我正在生成一个 UIImage 并将其保存到磁盘,以返回一个 NSURL。在运行时间较长的图像生成任务上,它在呈现给用户时是不完整的。我曾尝试将其强制到主线程上,但它仍然会发生。
如何确保item
完整?
根据文档[UIActivityItemProvider item]
在辅助线程上运行。这对于不锁定 UI 非常有用,但我发现它并不总是在item
显示时完成,例如在邮件撰写屏幕中。
我正在生成一个 UIImage 并将其保存到磁盘,以返回一个 NSURL。在运行时间较长的图像生成任务上,它在呈现给用户时是不完整的。我曾尝试将其强制到主线程上,但它仍然会发生。
如何确保item
完整?
这可以通过使用布尔值来保存项目的返回,直到文件的构建完成。如果您想在主视图上显示进度或显示活动指示器,您可以通过从主线程调用它来实现。这是一个实际的代码片段:
使用此功能在您的提供程序中设置活动视图控制器以加载进度视图。
self.parentViewController = parentVc;
这是具有阻塞和反馈视图加载的项目功能。
self.wait = true;
[self prepareFile:^(){
[self performSelectorOnMainThread:@selector(dismissProgressView)
withObject:nil waitUntilDone:NO];
}];
[self performSelectorOnMainThread:@selector(loadProgressView)
withObject:nil waitUntilDone:NO];
while (self.wait) {
[self performSelectorOnMainThread:@selector(updateProgressView)
withObject:nil waitUntilDone:NO];
}
return self.completedUrl;
然后,您可以创建在主线程上调用的三个函数以显示进度视图,在等待文件完成时更新进度视图。在dismissProgressView 函数的实现中,请确保dismissViewController 完成时将wait boolean 设置为false。