iOS播放Gif方案总结

iOS播放Gif方案总结

在iOS开发中常用的Gif播放有三种:

  • 原生UIWebView播放
  • UIImageView逐帧播放
  • 第三方GifView

当然最好的还是原生UIWebView播放,后面两种播放方式原理相同。

1.原生UIWebView播放

代码如下:

NSString *path = [[NSBundle mainBundle] pathForResource:@"happy" ofType:@"gif"];
//将图片转为NSData
NSData *gifData = [NSData dataWithContentsOfFile:path];
//创建一个webView,添加到界面
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
[self.view addSubview:webView];
//自动调整尺寸
webView.scalesPageToFit = YES;
//禁止滚动
webView.scrollView.scrollEnabled = NO;
//设置透明效果
webView.backgroundColor = [UIColor clearColor];
webView.opaque = 0;
//加载数据
[webView loadData:gifData MIMEType:@"image/gif" textEncodingName:nil baseURL:nil];

这种方式首次加载可能会有点慢,但是后面切换的时候就会特别的流畅,播放的时候也完全和设计的一样。

2.使用UIImageView逐帧播放

代码如下:

//创建UIImageView,添加到界面
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
[self.view addSubview:imageView];
//创建一个数组,数组中按顺序添加要播放的图片(图片为静态的图片)
NSMutableArray *imgArray = [NSMutableArray array];
for (int i=1; i<9; i++) {
    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"clock%02d.png",i]];
    [imgArray addObject:image];
}
//把存有UIImage的数组赋给动画图片数组
imageView.animationImages = imgArray;
//设置执行一次完整动画的时长
imageView.animationDuration = 8*0.2;
//动画重复次数 (0为重复播放)
imageView.animationRepeatCount = 0;
//开始播放动画
[imageView startAnimating];
//停止播放动画  - (void)stopAnimating;
//判断是否正在执行动画  - (BOOL)isAnimating;

这种方式在加载速度上是最快的,但是要手动设定帧数,和频率。如果需要切换动画还会卡顿,推荐一个UIImageView只有一张Gif的时候采用该方式。

3.使用第三方框架GifView

具体请转移至GitHub GifView.

你可能感兴趣的:(移动开发,ios)