当App需要显示动态图,我是这么干的

老大说,咱们网站的图要支持动图,这样网站会有意思地多

所以我们是要往A站B站的二次元方向发展吗
所以咱们的App也要支持动态图片
关于支持GIF动图这件事,我第一反应就是

CGImageSourceRef source = CGImageSourceCreateWithData((CFDataRef)data, nil);
size_t count = CGImageSourceGetCount(source);
float allTime = 0;
NSMutableArray *imageArray = [[NSMutableArray alloc] init];
NSMutableArray *timeArray = [[NSMutableArray alloc] init];
for (size_t i=0; i

通过NSURLSession下载下来图片,然后经过简单处理变成UIImage。ps:这里忽略完全无视了帧与帧之间的时间间隔问题

当App需要显示动态图,我是这么干的_第1张图片
捂脸

事情总是一步一步来的嘛,这样子已经解决了动图显示的问题了,不会再是总显示图片第一帧的样子了。
之前的UIImageView都是使用的AFNetworking提供的UIImageView+AFNetworking.h,然而它并不支持GIF,只会显示第一帧。而它提供的方法直接返回的就是UIImage,所以经过仔细的阅读源码,终于在AFURLResponseSerialization.m里找到了这个方法

+ (UIImage *)af_safeImageWithData:(NSData *)data

将上面处理NSData到UIImage的方法粘进去,嗯,perfect,完美融入项目,我真是太机智了。

然而,事妈龟毛处女座的我对那个Unlock和xxxx的提示(忘了怎么提示的了)真的难以接受,于是在衡量了自己写NSURLSessionDataTask下载图片与UIImageView+AFNetworking.h混用并添加缓存机制(我很懒的用了AFNetworking提供的……)的工作量之后,我毅然决然地选择了

SDWebImage

然后在两分钟的pod install之后
[self sd_setImageWithURL:url placeholderImage:placeholderImage];

完工~~


当App需要显示动态图,我是这么干的_第2张图片
所以你花了一下午时间都干了什么!!

你可能感兴趣的:(当App需要显示动态图,我是这么干的)