2013-01-08 140 views
2

我賽瑞斯,我的貴婦人(啊..只是一個騎士的事情,...)GIF支持iPhone

我有一個問題,我一直在這爭奪天,這裏是我的情況:

我有一個HTTP響應,其中包含一個GIF圖像的鏈接,然後GIF圖像被轉換成一個NSData,後來用於填充一個ImageView。預期或意外地,只顯示GIF的第一幀/轉換。簡單地說,圖像加載但不會動畫。

我想知道如果有一個GIF在iPhone的原生支持,同樣我發現這裏的擴展類SCGifExample 這似乎只出現在我導入應用程序中的GIF圖像的工作,而不是當圖像來自URI-> NSData。

我不想創建多個圖像,然後創建一個圖像數組,因爲這不會工作我的設置,因爲它會給服務器和客戶端帶來很多負載。

我在這裏搜索了我的搜索結果,但是我沒有發現任何實質性結果阻止我發佈自己的問題,事實上我發現這裏有許多與iphone + gif相關的問題都沒有答案。

我確實有懷疑,我希望有人能幫我弄清楚並理解它。我懷疑在從Image到NSDATA格式的轉換過程中GIF Animation/Transition是「LOST」。但我沒有任何具體的證據支持這一點。

下面是我如何將圖像轉換爲NSData;

contentURI = http://gta.champion.com/content?cmsFileId=513af9e9-a96d-4a56-8239-92be273393e0&mt=image/gif //lets just assume that when view using the browser, this would display the image. 

NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: contentURI]]; 

如果還有其他人來這個困境的勝利者,請幫我征服這樣的壯舉。

+0

只是要扔掉那裏,'UIWebView'支持GIF動畫... – esqew

+0

哇,希望我能回答你的問題......你應該被封爲! ;) – 2013-01-08 03:46:41

+0

@esqew不,不,不。爲什麼你要實例化這麼重的對象來顯示動畫圖片? –

回答

0

是的,有一個備用,但它取決於你的情況。但讓我與你分享這個想法,因爲使用UIWebView解決了我的問題,因爲我只需要動畫單個圖像即廣告。

這裏是代碼片段:

UIWebView *webV = [[[UIWebView alloc]initWithFrame:appDel.isiPad==TRUE?CGRectMake(260, 35, 500, 100):CGRectMake(40, 18, 250, 60)] autorelease] ; 
       webV.delegate =self; 
       webV.multipleTouchEnabled=NO; 
       [webV setBackgroundColor:[UIColor whiteColor]]; 
       webV.userInteractionEnabled=NO; 
       [webV loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"YourImageUrl"]]]; 

和實施他們的委託方法:

- (void)webViewDidStartLoad:(UIWebView *)webView; 

- (void)webViewDidFinishLoad:(UIWebView *)webView; 

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error; 
+0

我仍然想要抵制使用UIWebView,因爲我相信UIWebView是一個過度殺傷性的東西,它的重量如同Wayne Hartman對最初的問題評論的那樣重,(但是如果這會導致我的問題,並且它不會提出未來的內存問題)那麼就這樣吧。 –

+0

一個問題tho ...關於這個事件,你沒有被檢索到,你如何處理它?同樣,如果沒有處理程序存在,我會得到一個404?嗯。讓我試試這個壽。 –

+0

@paulpolo爲此,您需要檢查您的NSData是否爲零,然後使用此數據加載您的webView。此外,作爲預防措施,您也可以使用didFailLoadWithError來處理請求。 –

0

不幸的是,iOS不支持GIF圖像,也無法將它們用於動畫。如果您使用GIF圖像,則imageview將顯示該圖像的第一幀,僅此而已。

支持的格式請參考UIImage

Image Formats

+1

UIImage確實不直接支持動畫GIF文件,但可以在任何最新版本的iOS中使用ImageIO Framework讀取它們。請參閱下面的Wayne鏈接,但請注意,我在網上看到的動畫GIF閱讀庫都遭受致命缺陷的困擾,如果GIF太長而無法放入內存,將會使應用程序崩潰。 – MoDJ

+0

@MoDJ:感謝您的評論。謝謝(你的)信息。 –