美文网首页iOS锻炼吃饭的家伙
千万别在用SDWebImage加载gif图了

千万别在用SDWebImage加载gif图了

作者: 草原野马 | 来源:发表于2018-12-12 12:30 被阅读201次
    • 首先看一下项目中的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

    相关文章

      网友评论

        本文标题:千万别在用SDWebImage加载gif图了

        本文链接:https://www.haomeiwen.com/subject/ulpuhqtx.html