2

我的先生们,我的女士们(啊..只是另一个骑士的事情,...)

我有一个问题,我已经为此奋斗了好几天,这是我的场景:

我有一个 HTTP 响应,其中包含指向 GIF 图像的链接,然后将 GIF 图像转换为 NSData,然后用于填充 ImageView。出乎意料或出人意料的是,仅显示 GIF 的第一帧/过渡。简单地说,图像加载但不动画。

我想知道iPhone中是否有对GIF的本机支持,同样我在这里找到了一个扩展类SCGifExample ,它似乎只在我在应用程序中导入GIF图像时才起作用,而不是当图像来自URI时->NS 数据。

我不想创建多个图像然后创建一组图像,因为这对我的设置不起作用,因为它会给服务器和客户端带来很多负载。

我已经在 SO 上进行了搜索,但我没有找到任何实质性的结果来阻止我发布我自己的问题,因为事实上我发现这里有很多与 iphone+gif 相关的问题都没有得到解答。

我确实有一个怀疑,我希望有人能帮助我弄清楚并理解它。我怀疑在从 Image 转换为 NSDATA 格式的过程中,GIF 动画/过渡是“丢失”的。但是我没有任何具体的证据来支持这一点。

这是我将图像转换为 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]];

如果还有其他人战胜了这种困境,请帮助我也战胜这种壮举。

4

4 回答 4

0

不幸的是,iOS 不支持 GIF 图像,您也不能将它们用于动画。如果您使用 GIF 图像,则 imageview 将显示该图像的第一帧,仅此而已。

请参考UIImage以了解支持的格式。

图像格式

于 2013-01-08T04:06:08.257 回答
0

虽然 Apple 的 API 不支持开箱即用的动画 GIF,但有一个用户创建的解决方案同样有效:

LBGIFImage:
https ://github.com/larcus94/LBGIFImage

于 2013-01-08T04:15:29.283 回答
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;
于 2013-01-08T04:50:53.327 回答
0

看看我对在 iOS 中显示动画 gif 的发现。http://iosnotestoremember.blogspot.com/2013/01/showing-animated-gif-in-ios.html

我希望这有帮助。

于 2013-01-10T01:46:05.300 回答