如何在我的iPhone应用程序中使用动画.gif文件?

时间:2009-03-19 04:57:51

标签: iphone graphics

我有一个动画gif文件,我想在我的iPhone应用程序中使用,但动画不起作用。有人知道如何解决它吗?

5 个答案:

答案 0 :(得分:28)

如果您有一系列想要制作动画的图像,可以使用UIImageView轻松完成:

UIImage *blur5 = [UIImage imageNamed:@"blur5.png"];
UIImage *blur6 = [UIImage imageNamed:@"blur6.png"];

self.imageView.animationImages = [[NSArray alloc] initWithObjects:blur5, blur6, nil];
self.imageView.animationRepeatCount = 5;
[self.imageView startAnimating];

我发现这比尝试使用UIWebView更容易。

答案 1 :(得分:7)

UIWebView无法正确显示所有GIF内容。您需要使用UIImageView,但iPhone OS不支持动画GIFS,只显示第一帧。

所以你需要先提取所有其他帧。

原始示例代码: http://pliep.nl/blog/2009/04/iphone_developer_decoding_an_animated_gif_image_in_objc

答案 2 :(得分:5)

您可以在http://blog.stijnspijker.nl/2009/07/animated-and-transparent-gifs-for-iphone-made-easy/使用来源 它有一个GIF解码器,您可以直接使用它来获得解决方案。 我成功地使用了它。但它在透明度方面存在一些问题。

答案 3 :(得分:3)

这可以通过以下代码来实现:

NSArray * imageArray  = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"1.png"], [UIImage imageNamed:@"2.png"], nil]; //this will be the frames of animation images in sequence.
 ringImage = [[UIImageView alloc]initWithFrame:CGRectMake(100,200,600,600)];
 ringImage.animationImages = imageArray;
 ringImage.animationDuration = 1.5;//this the animating speed which you can modify
 ringImage.contentMode = UIViewContentModeScaleAspectFill;
 [ringImage startAnimating];//this method actually does the work of animating your frames.

我知道它是一个旧线程..但可能对某人有用.. :)

答案 4 :(得分:1)

另一个选择是解码应用程序中的gif,然后将“框架服务”它转换为OpenGL对象。对于大型GIF,这种方式不太可能耗尽内存。