我有一个UIActivityViewController,它允许用户共享他们创建的几种活动类型之一的图像(facebook、twitter、保存到相机卷、打印等等)。
由于我希望根据活动(高分辨率打印,twitter低分辨率)将图像保存/发送到不同的质量级别,所以我使用自定义的UIActivityItemProvider来提供图像。
渲染高分辨率版本需要一些时间,所以我想在它进行操作时显示一个活动指示器。事实上,苹果的医生们就是这么做的。
但我似乎找不出正确的地方把吊钩用来显示我的进度指示器.他们应该去哪里?
更新:在- (id) activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType方法中尝试了以下操作:
[self performSelectorOnMainThread:@selector(startSpinnerWithMessage:) withObject:message waitUntilDone:YES];
self.shareImage = [self.delegate imageForActivityOfType:activityType]; // code that actually generates the image; takes a while.
[self performSelectorOnMainThread:@selector(endSpinner) withObject:nil waitUntilDone:YES];...does不做这项工作。当我点击activity按钮时,UI会在生成图像时冻结,然后当它完成时,我会看到旋转器瞬间消失。
我认为endSpinner电话的定位是合理的.然而,startSpinner调用似乎需要到其他地方去。我不知道该怎么做。
发布于 2014-08-13 14:55:07
好吧,原来我只是搞错了.
我把我的抓取图像从委托代码放在- (id) activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType方法从UIActivityItemSource协议.结果表明,该方法是在主线程上触发的。
相反,我在UIActivityItemProvider的- (id) item方法中放置了相同的代码,它的工作原理就像一种魅力。
https://stackoverflow.com/questions/25278046
复制相似问题