美文网首页程序员iOS那点事儿iOS bug修复
【ios开发】gif图片加载不卡顿且避免内存暴增的方法

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

作者: 我是孙小白 | 来源:发表于2018-12-29 17:24 被阅读229次

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

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

先看之前的代码:

虽然使用了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滚动卡顿以及内存暴增的问题完美解决~~

开心到飞起!!!

相关文章

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/jcdplqtx.html