项目测试过程中, 发现了一个问题, 界面滑动时卡顿, 而且还会闪退。
没有无缘故的闪退, 也没有无缘由的卡顿, 说到底还是代码写的有问题,那就去分析一下吧。
先看之前的代码:
虽然使用了SDWebImage的类来加载, 但是用的是sd_animatedGIFWithData的方法。这个方法是SDWebImage4.0之前加载gif图片的方法, 使用NSData来处理图片数据, 并没有缓存到数据, 每次加载都要去处理一遍, 造成内存的暴增以及界面显示的卡顿。
怎么解决呢?
很简单, 升级你的SDWebImage到4.0以上, 然后使用FLAnimatedImageView来进行加载。
具体步骤:
-
pod install
Podfile文件中将pod SDWebImage 改为如下代码:
pod 'SDWebImage', '~> 4.0.0'
pod 'SDWebImage/GIF'
pod 'FLAnimatedImage', '~> 1.0'
pod insatll成功后是这样的:
- 导入头文件
在你需要的类里面先导入头文件:
#import "FLAnimatedImageView+WebCache.h"
创建一个FLAnimatedImageView的对象:
@property (nonatomic, strong) FLAnimatedImageView *gifIconImage;
懒加载处理:
- (FLAnimatedImageView *)gifIconImage
{
if (!_gifIconImage)
{
_gifIconImage = [[FLAnimatedImageView alloc] init];
}
return _gifIconImage;
}
- 使用
在你的cell或者任何你需要放置gif的地方,使用如下代码:
NSURL *imgUrl = [[NSBundle mainBundle] URLForResource:@"qulit" withExtension:@"gif"];
[self.gifIconImage sd_setImageWithURL:imgUrl];
这里使用了本地图片, 你也可以直接用这个方法加载网络图片, 从服务返回的图片等~~
好了,到此完工,项目里cell滚动卡顿以及内存暴增的问题完美解决~~
开心到飞起!!!