「OC」SDWebimage的学习

news/2024/11/15 2:51:01/

「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:imageURLplaceholderImage:[UIImage imageNamed:@"placeholder"]options:SDWebImageProgressiveLoadprogress:^(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.ppmy.cn/news/1546184.html

相关文章

ubuntu 22.04 server 安装 mysql 5.7.40 LTS

ubuntu 22.04 server 安装 mysql 5.7.40 LTS 参考: ubuntu 22.04 server 安装 和 初始化 LTS https://blog.csdn.net/wowocpp/article/details/143562451 centos7 安装 mysql5.7 LTS https://blog.csdn.net/wowocpp/article/details/139467094 mysql 常用指令 L…

JS 函数的基本知识

目录 1. 介绍函数 2. 使用函数 3. 函数传参 3.1 传递默认值 3.2 传递数组 3.3 传递变量 4. 函数返回值 5. 匿名函数 6. 立即执行函数 7. 注意 1. 介绍函数 在学习 CSS 样式过程中,经常有如下操作: 2. 使用函数 函数声明: 函数命名规…

科技查新在人工智能领域的重要性

科技查新在人工智能领域扮演着至关重要的角色,它不仅有助于推动技术创新,还能提高科研效率,降低投资风险,并促进科技成果的转化。以下是科技查新在人工智能中的几个关键作用: 避免重复研究:通过科技查新&a…

软考:去中心化的部署有什么特点

微服务架构被认为是去中心化的,因为它具有以下特点 模块化:微服务架构将应用程序拆分为一系列小型服务,每个服务都是独立的模块,易于维护和扩展 。这种模块化设计使得每个服务可以独立于其他服务运行,没有单一的控制中…

2024年华为OD机试真题-矩阵扩散-Java-OD统一考试(E卷)

最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客 每一题都含有详细的解题思路和代码注释,精选c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,持续跟新。 题目描述: 存在一个m*n的二维数组…

SQLite 与 Python:集成与使用

SQLite 与 Python:集成与使用 SQLite 是一种轻量级的数据库管理系统,因其小巧、快速和不需要独立的服务器进程而广受欢迎。Python 是一种高级编程语言,以其简洁明了的语法和强大的库支持而著称。将 SQLite 与 Python 结合使用,可以为开发人员提供一种快速、高效的方式来处…

【Rust练习】20.进一步深入特征

练习题来自&#xff1a;https://practice-zh.course.rs/generics-traits/advanced-traits.html 1 struct Container(i32, i32);// 使用关联类型实现重新实现以下特征 // trait Contains { // type A; // type B;trait Contains<A, B> {fn contains(&self, _: …

webpack的常见配置

Webpack 是一个现代 JavaScript 应用的模块打包工具&#xff0c;用于将项目中的多个文件和依赖打包成浏览器可以识别的文件&#xff0c;通常是一个或多个 JavaScript、CSS 或其他静态资源的 bundle&#xff08;将多个模块或文件合并成一个或几个文件的过程&#xff0c;这些合并…