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

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

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

先看之前的代码:

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

开心到飞起!!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,795评论 1 32
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,195评论 4 61
  • 作者:记渡——夭夭 1 都说,30岁之前的容貌是父母给的,30岁之后的容貌是自己给的,关于这个论点,32岁的阿君分...
    记渡阅读 2,784评论 0 3
  • 一人 尽是无限美好 一人 尽是无限寂寞 一人 谁来伴他? 陪伴 如此 之烦 曾想要帮 曾想要别 为此而伤 只为 你...
    如恋人般的你阅读 1,423评论 0 2
  • 小时候看星爷的《大话西游》,总是嘻嘻哈哈的,现在再回过头去看,又会泪流满面。我们每个人都像是剧中的那个孙猴子,总有...
    敢_阅读 1,586评论 0 0