2013-01-07 36 views
0

我正在使用iOS 6的UIActivityViewController。 我想共享一張在我的iPhone上本地不可用的圖像,但它在遠程URL上可用。使用URL與iOS 6和UIActivityViewController共享圖像

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

謝謝你,弗朗西斯

回答

3

與嘗試:

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

利瑪竇

+5

僅供參考這是一個同步網絡操作,所以如果這是在主線程上完成,您的應用程序將掛起,直到下載圖像。壞壞壞。 –

+1

你可能想看看使用'UIActivityItemProvider'的子類來提供一個稍後實現的佔位符。 – jessecurry

4

使用遠程圖像,我實現了一個UIActivityItemProvider子類,下載圖像當由UIActivityViewController請求時。 UIActivityViewController在後臺線程上調用你的UIActivityItemProvider,至少它不會阻塞主UI。我使用一個同步調用,就像Matteo在我的UIActivityItemProvider中建議的一樣。然而,它仍然不是一個好的解決方案,因爲它只是在你不得不去昂貴的下載時纔會延遲。直到用戶在視圖控制器中選擇其中一個活動圖標,UIActivityViewController纔會請求您的數據。那時,它調用UIActivityItemProvider來獲取數據。所以你在這個時候得到一個延遲。

相關問題