程序员iOS那点事儿iOS bug修复

【ios开发】gif图片加载不卡顿且避免内存暴增的方法

2018-12-29  本文已影响229人  我是孙小白

项目测试过程中, 发现了一个问题, 界面滑动时卡顿, 而且还会闪退。

没有无缘故的闪退, 也没有无缘由的卡顿, 说到底还是代码写的有问题,那就去分析一下吧。

先看之前的代码:

虽然使用了SDWebImage的类来加载, 但是用的是sd_animatedGIFWithData的方法。这个方法是SDWebImage4.0之前加载gif图片的方法, 使用NSData来处理图片数据, 并没有缓存到数据, 每次加载都要去处理一遍, 造成内存的暴增以及界面显示的卡顿。

怎么解决呢?

很简单, 升级你的SDWebImage到4.0以上, 然后使用FLAnimatedImageView来进行加载。

具体步骤:
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滚动卡顿以及内存暴增的问题完美解决~~

开心到飞起!!!

上一篇 下一篇

猜你喜欢

热点阅读