- 首先看一下项目中的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
网友评论