使用原生 API 展示 GIF 需要使用 ImageIO.framework 来从 data 中解析出每一帧, 同时通过 UIImageView 的 animationImages 属性来达成动画的支持...NSDictionary 做帧缓存,
用CADisplayLink 来做动画的展示, 同时添加帧解码任务...., 通过上述方法, 图片被加载到了内存缓存, 那么图片的实例是一个SDAnimatedImage对象, 用其他 UIImageView 加载该 url 命中内存缓存, 展示在页面上只是一张静态图....SDAnimatedImageView 通过 SDAnimatedImagePlayer 来实现动图的展示.
调用setImage:时会初始化新的 player....上下波动, 逐帧解码对整体数据无明显影响.
4.2 动图失真的问题
由于 QMAnimatedImageView 是通过 CADisplayLink 来驱动帧的展示, 在距离上一帧时间间隔超过帧时长时候才会展示下一帧