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

【iOS】SDWebImage

文章目录

  • 前言
  • SDWebImage
    • SDWebImage 的主要组件包括:
    • 常用方法及简单用法示例
  • 总结

前言

  在写知乎日报项目时,遇到了图片加载和通过API异步加载图片的问题,在组内成员的引导下,去学习了SDWebImage开源库。

SDWebImage

  SDWebImage 是一个用 Objective-C 编写的开源库,主要用于异步加载和缓存图片。
  SDWebImage 提供了一个异步图片下载器,允许在后台线程下载图片,避免阻塞主线程。
SDWebImage 实现了异步的内存和磁盘缓存机制,具有自动缓存到期处理。
SDWebImage 支持包括 GIF 和 WebP 在内的多种图片格式,且能确保同一个 URL 的图片不会被重复下载,确保无效的 URL 不会被反复加载,支持后台图片解压缩处理,以减少主线程的负担。

SDWebImage 的主要组件包括:

UIImageView+WebCache:为 UIImageView 提供网络图片加载和缓存的扩展。
SDWebImageManager:作为下载器和缓存的桥梁,管理图片的下载和缓存。
SDWebImageDownloader:负责图片的下载操作。
SDImageCache:负责图片的缓存,包括内存缓存和磁盘缓存。

常用方法及简单用法示例

在使用SDWebImage库之前,首先要将其导入所需项目内。
然后在需要的文件里引用头文件:

#import "UIImageView+WebCache.h"

使用时,调用sd_setImageWithURL:方法缓存图片,这就是新版本的新方法,旧方法是setImageWithURL:。下面是常用的几个方法

  1. sd_setImageWithURL:
//图片缓存的基本代码
[self.image1 sd_setImageWithURL:imagePath1];
  1. sd_setImageWithURL: completed:
//用block 可以在图片加载完成之后做些事情
[self.image2 sd_setImageWithURL:imagePath2 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {//在图片加载完成之后想触发的事情NSLog(@"加载完成");
}];
  1. sd_setImageWithURL: placeholderImage:
//给一张默认图片,先使用默认图片,当图片加载完成后再替换
[self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"]];
  1. sd_setImageWithURL: placeholderImage: completed:
//使用默认图片,而且用block 在完成后做一些事情
[self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {         NSLog(@"加载完成");        
}];
  1. sd_setImageWithURL: placeholderImage: options:
//options 选择方式
[self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"] options:SDWebImageRetryFailed];
//如果你只需要内存缓存,那么在options这里选择SDWebImageCacheMemoryOnly就可以了。

简单应用:

    NSURL *url = [NSURL URLWithString:@"https://news-at.zhihu.com/api/7/prefetch-launch-images/1080*1920"];self.imageView = [[UIImageView alloc] init];UIImage *placeholderImage = [UIImage imageNamed:@"placeholder"];[self.imageView sd_setImageWithURL:url placeholderImage:placeholderImage];[self.view addSubview:self.imageView];

总结

  我在知乎日报编写中运用了这个库函数,但是我并未获取到图片(在模拟器上没加载出来),不清楚是API的问题还是代码哪里出了差错,还在研究,另外,我暂时只学习了SDWebImage的常用方法和基本用法,至于运用时可能碰见的其他问题,还有待发现和解决。

参考文章:iOS SDWebImage的使用


http://www.mrgr.cn/news/62061.html

相关文章:

  • CSS 复习
  • 守护头顶安全——AI高空抛物监测,让悲剧不再重演
  • 哈希表 算法专题
  • 015:地理信息系统开发平台ArcGIS Engine10.2与ArcGIS SDK for the Microsoft .NET Framework安装教程
  • iQOO手机怎样将屏幕投射到MacBook?可以同步音频吗?
  • 深度学习在各个领域的实现
  • 海外联盟营销入门:2024最新指南
  • 玄机-应急响应- Linux入侵排查
  • 单层级IVR和多层级IVR有哪些区别
  • 视频转场素材资源网站分享
  • 网站攻击,XSS攻击的类型
  • C++20 时间转本地时间,时间转字符串以及字符串转时间的方法
  • Android 13 解决 Settings 首页矢量图修改颜色不生效
  • 嵌入式操作系统那么方便好用!为啥还要用单片机?
  • StructRAG简介
  • Open SSH服务配置
  • 20 Docker容器集群网络架构:三、Docker集群部署
  • Java项目:超市管理系统(有源代码)
  • Python小白学习教程从入门到入坑------第二十课 闭包修饰器(语法基础)
  • 财务透明度不足对企业运营决策的影响
  • HarmonyOS 5.0应用开发——文件读写
  • HBuilderX 下载安装
  • 【含文档】基于ssm+jsp的高校隔离宿舍管理系统(含源码+数据库+lw)
  • idea main 不是模块 导致找不到或无法加载主类
  • OpenSSH用户枚举漏洞修复——ubuntu升级ssh版本
  • minio javascript 常用操作整理(未完继续)