默认情况下,OC中的控件imageView不能加载gif图片,自己搜集到了3中方式,提供一个方便,推荐使用第一个方案,比较方便
1、github上面的一些第三方可以很好的解决,并且很好用,非常方便
a>具体步骤
1、将AnimatedGIFImageSerialization.h和AnimatedGIFImageSerialization.m导入项目
2、在AppDelegate.m中导入#import "AnimatedGIFImageSerialization.h"
3、在使用的地方直接用myImageView.image = [UIImage imageNamed:@"test.gif"]
b>这里是地址 https://github.com/shadow0603/AnimatedGIFImageSerialization
2、使用UIWebView播放
// 设定位置和大小
CGRect frame = CGRectMake(50,50,0,0);
frame.size = [UIImage imageNamed:@"guzhang.gif"].size;
// 读取gif图片数据
NSData *gif = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"guzhang" ofType:@"gif"]];
// view生成
UIWebView *webView = [[UIWebView alloc] initWithFrame:frame];
webView.userInteractionEnabled = NO;//用户不可交互
[webView loadData:gif MIMEType:@"image/gif" textEncodingName:nil baseURL:nil];
[self.view addSubview:webView];
3、将gif图片分解成多张png图片,使用UIImageView播放。
代码如下:
UIImageView *gifImageView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
NSArray *gifArray = [NSArray arrayWithObjects:[UIImage imageNamed:@"1"],
[UIImage imageNamed:@"2"],
[UIImage imageNamed:@"3"],
[UIImage imageNamed:@"4"],
[UIImage imageNamed:@"5"],
[UIImage imageNamed:@"6"],
[UIImage imageNamed:@"7"],
[UIImage imageNamed:@"8"],
gifImageView.animationImages = gifArray; //动画图片数组
gifImageView.animationDuration = 5; //执行一次完整动画所需的时长
gifImageView.animationRepeatCount = 1; //动画重复次数
[gifImageView startAnimating];
[self.view addSubview:gifImageView];
注意:这个方法,如果gif动画每桢间的时间间隔不同,不能达到此效果。