千万别在用SDWebImage加载gif图了

  • 首先看一下项目中的gif 图片的效果。
    后台返回的效果.gif

当我用SDWebImage 自带的方法加载的时候,突然发现这个GIF图的抖动效果变慢了,而不是速度很快的。 如果gif图多的话还会造成内存暴涨。

  • 分析源码找原因

问题出在获取每一帧图像的显示时间仅仅是为了计算gif动画的总时长,并没有给每一帧图像的显示时间分配相应的权重,导致每一帧图像显示的时间为平均时间,视觉上给人带来了卡顿效果

  • 以前的办法

在SDWebImage 4.4.0 版本之前想要通过url加载展示gif效果, 只需要用 UIImageView 创建的对象调用下面的方法就能实现
1.#import<SDWebImage/UIImageView+WebCache.h>
2.-(void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder;

  • 解决办法

但在 4.4.0 版本之后换了另外一种方式, 新增加了 FLAnimatedImageView 来实现动态图片的展示,继承自 UIImageView ,首先要 pod 引入下面的框架:pod 'SDWebImage/GIF'。然后使用 FLAnimatedImageView 来替换之前的 UIImageView 创建的对象, 再用该对象调用 sd_setImageWithURL: 方法即可:
1.#import <SDWebImage/FLAnimatedImageView+WebCache.h>
2.FLAnimatedImageView *imageView = [[FLAnimatedImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[self.view addSubview:imageView];
3.NSURL *url = [NSURL URLWithString:(NSString *)object.strIcon];
[imageView sd_setImageWithURL:url placeholderImage:[UIImage imageNamed:@"icon_placeholder"]];

加载gif 图还有一个框架就是YY大神的 https://github.com/ibireme/YYWebImage

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容