当前位置: 首页 > article >正文

「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详细介绍


http://www.kler.cn/a/388394.html

相关文章:

  • 初始 ShellJS:一个 Node.js 命令行工具集合
  • AppAgent 源码 (xml 解析)
  • 如何识别钓鱼邮件和诈骗网站?(附网络安全意识培训PPT资料)
  • 机器学习基础 衡量模型性能指标
  • 微服务篇-深入了解 XXL-JOB 分布式任务调度的具体使用(XXL-JOB 的工作流程、框架搭建)
  • 教培行业数字化未来:一站​式开发在线教育系统源码与网校APP详解
  • 万字长文解读深度学习——循环神经网络RNN、LSTM、GRU、Bi-RNN
  • 多线程的创建方式以及及Thread类详解
  • 小菜家教平台(五):基于SpringBoot+Vue打造一站式学习管理系统
  • axios 访问data类型和.net core 后端对应接收
  • Ubuntu和Debian系列的Release默认shell解释器变更
  • 虚拟现实技术在旅游行业的应用
  • 42.第二阶段x86游戏实战2-lua寻找状态指针
  • C++设计模式结构型模式———责任链模式
  • mapreduce综合应用案例 — 气象数据清洗
  • StarTowerChain 与 DePIN:共筑区块链新蓝图
  • 洛谷每日一题——P1036 [NOIP2002 普及组] 选数、P1045 [NOIP2003 普及组] 麦森数(高精度快速幂)
  • 知从科技受邀出席ARM日产技术日
  • 智谱AI视频生成模型CogVideoX v1.5开源 支持5/10秒视频生成
  • Dear ImGui 使用VS2022编译为静态库
  • 信息安全工程师(84)UNIX/Linux操作系统安全分析与防护
  • 1.2 数据结构的分类与应用
  • AI 大模型:重塑软件开发的新力量
  • 新160个crackme - 095-tengxingCrackMe_v1.1
  • 界面控件DevExpress WPF中文教程:Data Grid——卡片视图设置
  • 初识Linux · 命名管道