![](https://products-qa.fileformat.com/zh/image/swift/kingfisher/header-image.png)
Kingfisher
用于下载和缓存图像的免费 Swift 库
开源 Swift API,允许软件开发人员在其网络应用程序中处理远程图像。它允许下载和缓存图像、应用图像处理器和过滤器。
Kingfisher是一个轻量级的纯Swift实现、为使用Swift代码处理多个图像文件格式提供完整的功能。 图书馆帮助开发者创建可以轻松地远程处理图像的应用程序。 图书馆异步下载和缓存图像在他们自己的应用程序。 图书馆为下载的图像支持多层缓存、这极大地提高了应用程序的性能。 这意味着图像将被缓存在内存和磁盘上、因此不需要再次下载它。
该库非常易于处理,并为缓存管理提供了便利。用户可以轻松设置缓存的大小和持续时间。它还将提供一个自动缓存清理工具,帮助用户防止库使用过多的资源。另一个很棒的功能包括任务取消。如果不再需要,用户可以轻松取消下载或图像检索过程。
“捕鱼图书馆”为开发人员提供便利、根据他们的需要分别使用图像下载和图像缓存组件。 您甚至可以根据您自己的需要使用Swift代码创建您的缓存。 它通过避免不必要的磁盘操作来改进磁盘缓存性能。 图书馆是开放源码、可根据《信息技术许可证》获得。
开始使用翠鸟
使用以下命令克隆最新的源
通过 GitHub 安装 Kingfisher。
$ git submodule add https://github.com/onevcat/Kingfisher.git
通过Swift图书馆下载和缓存图像
程序下载一个图像并存储它使用URL的缓存是一个非常困难的任务。 开放源码Swift库Kingfisher使软件开发者很容易在自己的应用程序中有效下载和缓存图像。 库支持在内存和磁盘中缓存图像。 默认情况下、将使用的AM数量甚至不是有限的、用户可以自行设置该值。
通过Swift图书馆下载和缓存图像
let urls = ["https://example.com/image1.jpg", "https://example.com/image2.jpg"]
.map { URL(string: $0)! }
let prefetcher = ImagePrefetcher(urls: urls) {
skippedResources, failedResources, completedResources in
print("These resources are prefetched: \(completedResources)")
}
prefetcher.start()
// Later when you need to display these images:
imageView.kf.setImage(with: urls[0])
anotherImageView.kf.setImage(with: urls[1])
在Swift应用程序中查看图像
国王渔业图书馆允许软件程序员在其应用程序中轻松地包含图像查看能力。 设置图像视图的最简单方法是使用UIImageView扩展。 图书馆将从URL下载图像、并将其带到内存缓存和磁盘缓存、并显示它在imageView。 当后一个用户调用相同的URL时、它将从缓存中迅速检索并显示图像。 它还支持与图像相关的一些功能、如下载图像的消失、显示持有者、圆角图像等。
Swift应用程序中的视图
import Kingfisher
let url = URL(string: "https://example.com/image.png")
imageView.kf.setImage(with: url)
人工存储或删除缓存图像
开放源码Swift库Kingfisher使程序员能够轻松地存储和删除缓存中的图像。 默认情况下、可以使用视图扩展方法将检索的图像自动存储到缓存中。 但是你可以用缓存。存储器()方法手动操作。 您还可以通过图像的原始数据、帮助图书馆确定该图像应以何种格式存储。 它还提供支持手动从缓存中删除某个图像。 它还支持清除所有缓存数据、报告磁盘存储大小并创建自己的缓存。
Swift应用程序中的视图
//Check whether an image in the cache
let cache = ImageCache.default
let cached = cache.isCached(forKey: cacheKey)
// To know where the cached image is:
let cacheType = cache.imageCachedType(forKey: cacheKey)
// `.memory`, `.disk` or `.none`.
// Store Image in the cache
let processor = RoundCornerImageProcessor(cornerRadius: 20)
imageView.kf.setImage(with: url, options: [.processor(processor)])
// Later
cache.isCached(forKey: cacheKey, processorIdentifier: processor.identifier)
// Retrieve image from cache
cache.retrieveImage(forKey: "cacheKey") { result in
switch result {
case .success(let value):
print(value.cacheType)
// If the `cacheType is `.none`, `image` will be `nil`.
print(value.image)
case .failure(let error):
print(error)
}
}