我正在使用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
答案 0 :(得分:4)
为了使用远程图像,我实现了一个UIActivityItemProvider子类,它在UIActivityViewController请求时下载图像。 UIActivityViewController在后台线程上调用您的UIActivityItemProvider,因此至少它不会阻止主UI。我使用同步调用,就像Matteo在我的UIActivityItemProvider中建议的那样。但是,它仍然不是一个很好的解决方案,因为它只是在您必须进行昂贵的下载时才会延迟。在用户选择视图控制器中的某个活动图标之前,UIActivityViewController不会请求您的数据。那时,它调用UIActivityItemProvider来获取数据。所以你现在得到延迟。
答案 1 :(得分:3)
尝试:
UIImage *imageToShare = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@", _iconUrl]]]];
利玛