使用URL与iOS 6和UIActivityViewController共享图像

时间:2013-01-07 16:39:28

标签: image ios6 uiimage afnetworking uiactivityviewcontroller

我正在使用iOS 6的UIActivityViewController。 我想分享一张我的iPhone本地无法使用的图片,但它可以通过远程网址获得。

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

谢谢Francesco

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

尝试:

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

利玛