SKImageCache
SKImageCache 提供一个对象来处理图像加载和缓存。在 workspace 中的 SampleProject 中查看一些使用示例。
安装
Cocoapods
安装通过 Cocoapods 支持。将以下内容添加到您的 Podfile 中,以便在您希望使用 SKImageCache 的目标中
pod 'SKImageCache'
初始化
没有公开的初始化器。所有与缓存的交互应通过共享实例处理
ImageCache.shared
实现
将图像添加到缓存
使用cacheImage(_:forURL:)
方法将图像添加到缓存。图像的远程URL是必需的,并用作从缓存中访问图像的键。
清空缓存
可以通过调用emptyCache()
方法清空整个缓存。
从缓存中检索图像
可以使用getImage(url:skipCache:completion:) -> URLSessionDataTask?
方法从缓存中检索图像。URL是图像的远程URL。如果需要强制请求访问URL的远程源,可以使用skipCache参数。完成闭包将包含图像、指示图像是否从缓存中返回的布尔值,以及在检索图像时遇到的任何错误。方法本身返回一个可选的URLSessionDataTask。如果要为检索图像发出远程请求,则此数据任务应该是远程任务。这允许在必要时取消图像请求,例如,如果请求图像的视图不再可见。
移除单个对象
可以使用removeObjectAtURL(_:)
方法从缓存中移除单个对象。
ImageCacheDelegate
在缓存中找不到图片时,将从代理对象请求图片。这允许将图片缓存连接到您现有的网络层。当图片在缓存中没有找到且应从外部源加载时,将调用代理对象的loadImageAtURL(_:completion:) -> URLSessionDataTask?
方法。
LocalImageController
提供LocalImageController类,允许管理从磁盘保存、检索和删除图片。这可以独立于ImageCache使用。
保存图片
要保存图片,使用saveJPEG(_:compression:fileName:directory:)
或savePNG(_:fileName:directory:)
方法。图片将被转换为数据并在磁盘上以方法对应格式保存。文件名是在磁盘上图片的名称。目录是一个可选参数。在此传递一个路径来指定比文档目录更深的文件夹。如果文件夹不存在,它将被创建。
检索图片
可以使用getImage(imageName:directory:)
方法检索图片。传递文件名称和从文档目录的路径。如果没有传入路径参数,将在文档目录中搜索。
删除目录
删除指定的文件夹及其所有内容。
UIImageView 扩展
SKImageCache 为 UIImageView 提供了一个扩展。这允许使用图片的 URL 在图像视图中设置图片。使用 setImageFromURL(_:placeholderImageName:) -> URLSessionDataTask?
方法。URL 是要获取的图片的远程 URL。占位图图片名称是在包中显示的图片的名称,直到返回远程或缓存图片。如果图片来自缓存,将会立即交换图片。如果图片来自远程源,则图片将会渐变。