自学内容网 自学内容网

「OC」SDWebimage的学习

「OC」SDWebimage的学习

前言

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

简介

88f6421dd722b6416f967f03b5edf32d

这是SD库之中的框架之中的内容

  • UIImageView+WebCacheUIButton+WebCache直接为表层的 UIKit框架提供接口
  • SDWebImageManger负责处理和协调SDWebImageDownloaderSDWebImageCache, 并与 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详细介绍


原文地址:https://blog.csdn.net/aa2002aa/article/details/143667651

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!