IOS中如何显示Gif

夏侯英纵
2023-12-01
        聊天的时候我们经常用到很多搞笑的Gif表情,有时候千言万语真的比不上一个Gif来的实在。以前一直以为想Gif作为一种常用格式,各大平台应该都会支持,知道前两天项目中要加载一个Gif作为过渡动画,我查了半天帮助文档,发现IOS中居然没有现成的支持加载和播放Gif的类。  
  于是上网简单的搜了一下,发现两个比较有有用的代码。网址分别如下:  
         三种方式显示GIF图片  
   andrei512 / GIFLoader.h  
  这两种方法都是采用ImageIO库,对Gif文件进行解析,然后自己做动画显示,至此显示Gif动画的思路就已经比较明确了。  
  我们知道Gif是由一阵阵画面组成的,而且每一帧画面播放的时常可能会不相等,观察上面两个例子,发现他们都没有对Gif中每一帧的显示时常做处理,这样的结果就是整个Gif中每一帧画面都是以固定的速度向前播放,很显然这并不总会符合需求。  
  于是自己写一个解析Gif的工具类,解决每一帧画面并遵循每一帧所对应的显示时间进行播放。  
  程序的思路如下:  
  1、首先使用ImageIO库中的CGImageSource家在Gif文件。  
  2、通过CGImageSource获取到Gif文件中的总的帧数,以及每一帧的显示时间。  
  3、通过CAKeyframeAnimation来完成Gif动画的播放。  
  下面直接上我写的解析和播放Gif的工具类的代码:  
      Github地址:https://github.com/smileEvday/SvGifView/  
 
  代码很短也比较容易,就不一一解释了。最开始的那个C函数主要就是用来解析Gif的,之所以用C函数是因为我要返回多个信息,而Objective-c只能返回一个参数,而且Objective-c和C语言可以很方便的混合编程。  
 类似资料: