「OC」SDWebimage的学习
前言
在知乎日报这个项目之中,我在很多情况下都会进行图片资源的网络申请。通过上网搜索我了解到了SDWebimage这个功能丰富的第三方库,进行了较为浅层的学习。因为SDWebimage这个库之中的相关内容还是较为多且复杂的,我个人的能力只能够进行简单的运用
简介

这是SD库之中的框架之中的内容
- UIImageView+WebCache和- UIButton+WebCache直接为表层的 UIKit框架提供接口
- SDWebImageManger负责处理和协调- SDWebImageDownloader和- SDWebImageCache, 并与 UIKit层进行交互。
- SDWebImageDownloaderOperation真正执行下载请求;最底层的两个类为高层抽象提供支持。
使用
这里仅仅介绍SDWebImage之中最简单的用法,也就是我在项目之中使用的相关方法
[topDisplayView.imageView sd_setImageWithURL:[NSURL URLWithString:story.image]];
处理下载进度和完成事件
可以添加下载进度和完成的回调:
[imageView sd_setImageWithURL:imageURL
             placeholderImage:[UIImage imageNamed:@"placeholder"]
                      options:SDWebImageProgressiveLoad
                     progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
                         // 这里可以更新进度条
                         NSLog(@"下载进度:%f", (CGFloat)receivedSize / expectedSize);
                     }
                    completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
                        if (error) {
                            NSLog(@"图片加载失败: %@", error.localizedDescription);
                        } else {
                            NSLog(@"图片加载成功并缓存!");
                        }
                    }];
清除缓存
SDWebImage 默认会缓存图片,减小网络流量。如果需要清理缓存,可以使用 SDImageCache:
// 清理内存缓存
[[SDImageCache sharedImageCache] clearMemory];
// 清理磁盘缓存
[[SDImageCache sharedImageCache] clearDiskOnCompletion:^{
    NSLog(@"磁盘缓存已清除");
}];
设置缓存策略
我们可以通过 SDWebImageOptions 来控制缓存策略,比如使用 SDWebImageRefreshCached 强制刷新图片:
[imageView sd_setImageWithURL:imageURL placeholderImage:[UIImage imageNamed:@"placeholder"] options:SDWebImageRefreshCached];
参考文章
iOS SDWebImage详细介绍


















