I have an animated gif file that I want to use in my iPhone application, but the animation doesn't work. Does anybody know how to fix it?
我有一个动画gif文件,我想在我的iPhone应用程序中使用,但动画不起作用。有人知道如何解决它吗?
5 个解决方案
#1
28
If you have a serie of images you want to animate you can easily do it with UIImageView:
如果您有一系列想要制作动画的图像,可以使用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];
I found this easier than trying to use UIWebView.
我发现这比尝试使用UIWebView更容易。
#2
7
UIWebView does not properly display all GIF content. You need to use a UIImageView, but the iPhone OS does not support animated GIFS and only displays the first frame.
UIWebView无法正确显示所有GIF内容。您需要使用UIImageView,但iPhone OS不支持动画GIFS,只显示第一帧。
So you need to extract all of the other frames first.
所以你需要先提取所有其他帧。
Crude example code here: http://pliep.nl/blog/2009/04/iphone_developer_decoding_an_animated_gif_image_in_objc
这里有粗略的示例代码:http://pliep.nl/blog/2009/04/iphone_developer_decoding_an_animated_gif_image_in_objc
#3
5
You can use source at http://blog.stijnspijker.nl/2009/07/animated-and-transparent-gifs-for-iphone-made-easy/ It has a GIF decoder that you can use directly to get solution. I successfully used it. But it have some problems with transparency.
您可以在http://blog.stijnspijker.nl/2009/07/animated-and-transparent-gifs-for-iphone-made-easy/上使用来源。它有一个GIF解码器,您可以直接使用它来获得解决方案。我成功地使用了它。但它在透明度方面存在一些问题。
#4
3
This can be achieved by this piece of code:
这可以通过以下代码实现:
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.
I know its an old thread..but may be helpful for someone..:)
我知道它是一个老线程..但可能对某人有帮助.. :)
#5
1
One other option is to decode the gif in your application, and then "frame serve" it to a OpenGL object. This way is less likely to run out of memory for large gifs.
另一个选择是解码应用程序中的gif,然后将“框架服务”它转换为OpenGL对象。对于大型GIF,这种方式不太可能耗尽内存。
#1
28
If you have a serie of images you want to animate you can easily do it with UIImageView:
如果您有一系列想要制作动画的图像,可以使用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];
I found this easier than trying to use UIWebView.
我发现这比尝试使用UIWebView更容易。
#2
7
UIWebView does not properly display all GIF content. You need to use a UIImageView, but the iPhone OS does not support animated GIFS and only displays the first frame.
UIWebView无法正确显示所有GIF内容。您需要使用UIImageView,但iPhone OS不支持动画GIFS,只显示第一帧。
So you need to extract all of the other frames first.
所以你需要先提取所有其他帧。
Crude example code here: http://pliep.nl/blog/2009/04/iphone_developer_decoding_an_animated_gif_image_in_objc
这里有粗略的示例代码:http://pliep.nl/blog/2009/04/iphone_developer_decoding_an_animated_gif_image_in_objc
#3
5
You can use source at http://blog.stijnspijker.nl/2009/07/animated-and-transparent-gifs-for-iphone-made-easy/ It has a GIF decoder that you can use directly to get solution. I successfully used it. But it have some problems with transparency.
您可以在http://blog.stijnspijker.nl/2009/07/animated-and-transparent-gifs-for-iphone-made-easy/上使用来源。它有一个GIF解码器,您可以直接使用它来获得解决方案。我成功地使用了它。但它在透明度方面存在一些问题。
#4
3
This can be achieved by this piece of code:
这可以通过以下代码实现:
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.
I know its an old thread..but may be helpful for someone..:)
我知道它是一个老线程..但可能对某人有帮助.. :)
#5
1
One other option is to decode the gif in your application, and then "frame serve" it to a OpenGL object. This way is less likely to run out of memory for large gifs.
另一个选择是解码应用程序中的gif,然后将“框架服务”它转换为OpenGL对象。对于大型GIF,这种方式不太可能耗尽内存。