分享UIImage到UIActivityViewController Twitter/Facebook非常缓慢显示对话框

6
我有一张从相机拍摄并保存到 /tmp 文件夹的图片。
当我将这张图片添加到 UIActivityViewController 的 activityItems 中,并且选择分享到 Twitter 或 Facebook,我需要等待长达 20 秒才能看到分享对话框。
请注意,我指的是实际的“发布”对话框,而不是生成它的本地分享弹出窗口。
当我从照片应用程序分享相同的图像时,它会立即出现。
起初,我认为照片应用程序正在调整图像大小,因为较小的图像出现得更快,但后来我发现,当我直接使用 SLComposeViewController 将相同的图像分享到 Twitter 或 Facebook 时,它几乎可以立即出现。
假设这是我在代码中做错了什么,以下是导致缓慢对话框出现的原因:
NSArray *items = @[@"foo", [UIImage imageWithContentsOfFile:@"valid path to test image"]];

UIActivityViewController *vc = [[UIActivityViewController alloc]
        initWithActivityItems:items applicationActivities:nil];
[self presentViewController:vc animated:YES completion:nil];

这里是几乎即时起作用的方法:
SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[controller setInitialText:@"foo"];
[controller addImage:[UIImage imageWithContentsOfFile:@"valid path to test image"]];
[self presentViewController:controller animated:YES completion:Nil];

就我所知,我也尝试过排除其他共享类型(我读到过AirDrop曾经引起问题),以及包装块以确保我在主线程上执行。

我猜我做错了什么?

如果我没有错,这两种方法确实可以调整图像大小,那么是否有一些我缺少的文档提供关于要调整多少大小的指导?

**编辑:额外的测试似乎表明这个问题只存在于iOS8中,在旧的iOS7设备上我没有遇到过这个问题。

谢谢


只是想补充一下,我在iOS 8.4上看到了这个问题。 - francis
嗯...这很遗憾。图片实际上能够成功上传到Twitter吗?上传用户生成的照片会很好。 - fatuhoku
此外,在iOS 9中,这个性能问题仍然存在吗? - fatuhoku
1个回答

1
我们发现分享对话框出现前有4-20秒的延迟!
我通过为Twitter和Facebook创建自定义UIActivity项目并在performActivity方法中简单调用SLComposeViewController来解决了这个问题。
看起来快多了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接