- 首先看一下项目中的gif 图片的效果。 后台返回的效果.gif
当我用SDWebImage 自带的方法加载的时候,突然发现这个GIF图的抖动效果变慢了,而不是速度很快的。 如果gif图多的话还会造成内存暴涨。
- 分析源码找原因
问题出在获取每一帧图像的显示时间仅仅是为了计算gif动画的总时长,并没有给每一帧图像的显示时间分配相应的权重,导致每一帧图像显示的时间为平均时间,视觉上给人带来了卡顿效果
- 以前的调用方法
在SDWebImage 4.0.0 版本之前想要通过url加载展示gif效果, 只需要用 UIImageView 创建的对象调用下面的方法就能实现
1.#import<SDWebImage/UIImageView+WebCache.h>
2.-(void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder;
- gif 加载问题解决办法
但在 4.0.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 加载webp 格式的图片,
SDWebImage 加载webp 格式的图片,我们还需要做一些额外的操作
比如用pod 的需要导入 pod 'SDWebImage/WebP' ,但是这个pod 会卡在了下载 Installing libwebp (0.6.0) 的地方,
所以这个需要翻墙后,还需要设置一些代理。比较麻烦,可以参考pod 'SDWebImage/WebP'参考链接
如果你的框架已经确定下来了不好修改为YYWebImage了,那么久最后手动导入SDWebImage。
-
先从github 上下载SDWebImage ,放入项目中
2 然后再下载YYImage 那里面的WebP.framework 拖入项目中
3 为了让SDWebImage 支持webp格式图片, 需要设置一下
设置
然后就可以实现webp 格式的图片加载了。
网友评论