iOS下如何播放GIF动画

几个月前无意中看到StackOverFlow上的一个帖子How to get suitable CGImage from combined TIFF for display scale了解到了ImageIO这个框架,看到它可以读取TIFF中的单张图片,当时就想能不能读取GIF中的图片呢?后来进一步研究后发现答案是肯定的。后来就想哪天细研究一下吧,顺便写篇博客记录一下。没想到我是这么的懒~,昨天才终于研究好了顺便写了个项目WYZGIFAnimationView开源到了Github上。

GIF动画大家应该都知道,但是在iOS中却不能直接播放它,只能显示它的第一帧画面。iOS中可以使用UIImageView并通过其animationImagesanimationDurationanimationRepeatCount等属性来播放连续图片的动画。UIImage在iOS 5.0之后增加了+ animatedImageNamed:duration:+ UIImage animatedImageWithImages:duration:等方法,通过这些方法创建的UIImage对象赋值给UIImageViewimage属性,同样也可以播放动画。

我们如果想播放GIF动画,其实要做的就是将GIF动画中的每一帧拿出来转化成UIImage,放到一个数组,然后在通过读取GIF每一帧的延时时间并累加得出一个总时长,做完以上两步之后在通过上面的方法就可以播放GIF动画了。但是通过这种方式创建的动画有一个缺点,因为GIF动画很有可能不是匀速动画,它的每一帧延时可能都会不同。于是WYZGIFAnimationView诞生了,说到这里突然想到WYZGIFAnimationView还没有支持这一点,我要赶紧修正一下啦~