0

我正在使用 iOS 6 的 UIActivityViewController。我想共享一个在我的 iPhone 上本地不可用但在远程 URL 上可用的图像。

NSString *textToShare = _eventoTitle;
UIImage *imageToShare = [UIImage imageNamed:_iconUrl];
NSURL *url = [NSURL URLWithString:_permalink];
NSArray *activityItems = [[NSArray alloc]  initWithObjects:textToShare, imageToShare, url, nil];

不幸的是,这不起作用。我究竟做错了什么?

我也尝试过使用 AFNetworking 库:

UIImage *imageToShare = [UIImage alloc];
[*imageToShare setImageWithURL:[NSURL URLWithString:_iconUrl]];

这也行不通。

_iconUrl 类似于http://www.mysite.com/picture.png

谢谢你,弗朗切斯科

4

2 回答 2

4

为了使用远程图像,我实现了一个 UIActivityItemProvider 子类,它在 UIActivityViewController 请求时下载图像。UIActivityViewController 在后台线程上调用您的 UIActivityItemProvider,因此至少它不会阻塞主 UI。我使用同步调用,就像 Matteo 在我的 UIActivityItemProvider 中建议的那样。但是,它仍然不是一个很好的解决方案,因为它只是在您必须进行昂贵的下载时延迟。在用户选择视图控制器中的一个活动图标之前,UIActivityViewController 不会请求您的数据。那时,它调用 UIActivityItemProvider 来获取数据。因此,您此时会遇到延迟。

于 2013-02-16T17:01:24.033 回答
4

尝试:

UIImage *imageToShare = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@", _iconUrl]]]];

马泰奥

于 2013-01-08T15:41:26.250 回答