我有一个动画gif文件,我想在我的iPhone应用程序中使用,但动画不起作用。有人知道如何解决它吗?
答案 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,这种方式不太可能耗尽内存。