2013-01-08 111 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:感谢您的评论。谢谢(你的)信息。 –