-
首先看一下項(xiàng)目中的gif 圖片的效果诵竭。后臺(tái)返回的效果.gif
當(dāng)我用SDWebImage 自帶的方法加載的時(shí)候,突然發(fā)現(xiàn)這個(gè)GIF圖的抖動(dòng)效果變慢了兼搏,而不是速度很快的卵慰。 如果gif圖多的話還會(huì)造成內(nèi)存暴漲。
- 分析源碼找原因
問題出在獲取每一幀圖像的顯示時(shí)間僅僅是為了計(jì)算gif動(dòng)畫的總時(shí)長佛呻,并沒有給每一幀圖像的顯示時(shí)間分配相應(yīng)的權(quán)重裳朋,導(dǎo)致每一幀圖像顯示的時(shí)間為平均時(shí)間,視覺上給人帶來了卡頓效果
- 以前的辦法
在SDWebImage 4.4.0 版本之前想要通過url加載展示gif效果吓著, 只需要用 UIImageView 創(chuàng)建的對象調(diào)用下面的方法就能實(shí)現(xiàn)
1.#import<SDWebImage/UIImageView+WebCache.h>
2.-(void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder;
- 解決辦法
但在 4.4.0 版本之后換了另外一種方式鲤嫡, 新增加了 FLAnimatedImageView 來實(shí)現(xiàn)動(dòng)態(tài)圖片的展示,繼承自 UIImageView 夜矗,首先要 pod 引入下面的框架:pod 'SDWebImage/GIF'泛范。然后使用 FLAnimatedImageView 來替換之前的 UIImageView 創(chuàng)建的對象, 再用該對象調(diào)用 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 圖還有一個(gè)框架就是YY大神的 https://github.com/ibireme/YYWebImage