- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 Kingfisher用于在 UICollectionView 单元格中缓存图像的库。
我注意到调用 kf_setImage
(假设cell的名字叫listCell
,它的ImageView叫imgMain
)如下:
listCell.imgMain.kf.setImage(with: URL(string: "MY IMAGE URL"),
placeholder: UIImage(named: "PLACEHOLDER IMAGE"))
工作正常,它确实缓存图像并在单元格重新出队时显示它(上下滚动时,我可以直接看到图像而无需重新下载),但是当我拉动以刷新 Collection View (回想一下具有完全相同参数的 API,这意味着它将返回相同的图像 url)图像已重新下载!我假设图像已经被缓存。
为了更清楚,this link包含描述我所面临的情况的 gif 图像。
那么,为什么图像会再次下载?这是翠鸟缓存的默认行为吗?是否应编辑任何配置以按我预期的方式运行?
我读了library documentation ,但 - 不幸的是 - 我无法找到与我的要求相关的有用信息。
最佳答案
Kingfisher 默认使用整个 url 作为缓存键,因此您必须确保每次请求 API 时图像的 url 字符串都相同。如果 url 中附加了时间戳或版本号之类的内容,缓存将失败。 (例如 http://example.com/image.png?time=123
和 http://example.com/image.png?time=456
将是被识别为两个不同的缓存键,尽管您可以从中获得相同的图像)。
这是我能为您的手术绘制的唯一案例。如果这对你来说是真的,你可以创建一个 ImageResource
来明确指定缓存键(它应该与你的原始 url 相关,但去掉附加的东西):
let r = ImageResource(downloadURL: yourUrl, cacheKey: key)
imageView.kf.setImage(with: r, placeholder: yourImage)
关于ios - Kingfisher 默认缓存行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43049041/
使用 Kingfisher 5.7.1,我无法仅为一个类(UIImageView 扩展)导入 Kingfisher。 我可以针对通用 iOS 设备进行构建,但如果我在模拟器或设备上尝试,则会出现导入错
我的 API 返回 2 种类型的照片:小照片和大照片 我使用 kingfisher 加载照片,并且总是先加载小照片。当我加载大照片时我想实现这一点 if hasCacheSmallPhoto {
我正在尝试使用 Cocoapod KingFisher 缓存图像,我使用的代码确实显示数据库存储中的图像,但它不缓存。我很好奇为什么? 打印总是显示“cache Result none”。而且我还注意
我是 swift IOS 新手 .. 我用这个 kingfisher 从 url 获取图像 .. 这是原始代码.. let kingfisherSource = [KingfisherSource(u
for url in status.storedPicURLS! { group.enter() print("🐷\(status.storedPic
我搜索了 Kingfisher 文档和 Stack Overflow,对于 Kingfisher 是否支持视频缓存没有明确的答案。一般来说,我是缓存视频/图像的新手,所以如果有人可以扩展 (1) 是否
我有一个带有图片 url 的数组,我需要下载所有图片,在传递给查看之前将它们全部添加到数组中。 我正在使用该片段下载单个图像 var images: [UIImage] = [] ImageDownl
我正在使用 Kingfisher用于在 UICollectionView 单元格中缓存图像的库。 我注意到调用 kf_setImage (假设cell的名字叫listCell,它的ImageView叫
我想在模拟器上运行我的应用程序 但我收到此错误: no such module 'Kingfisher' pod更新,pod安装,删除DerivedData文件夹,重新启动xcode,使用xcwork
我正在尝试使用 Kingfisher 动态设置 UIImageView 。上下文是在不同可选择行的前一个屏幕上有一个 TableView,然后当选择该行时,详细信息 UIView 显示其中包含更多信息
我有一个可以使用 API JSON 响应的应用程序。只是检索一个简单的项目数组。每个项目都有一个带有高分辨率图像的 URL。我正在使用 Kingfisher 获取此图像并将其大小调整为我的 Image
我有 Medicine 结构,它包含我要下载并设置到 ImageView 的图像的 image_origin URL。出于下载/缓存目的,我使用了 Kingfisher 框架。 let m =
我正在使用 Kingfisher 从一组 url 下载图像。 我需要将下载或缓存的图像(实际大小的图像)存储在我的文档目录中。 这有可能吗? 最佳答案 使用以下代码将图像加载到 ImageView 中
我的滚动性能一直很慢,我注意到当我滚动并且使用非缓存图像调用 setImage 时,性能会在下载时滞后。 if let imageURL = URL(string: presentable.image
我正在使用翠鸟通过这些方法之一下载单个图像 KingfisherManager.shared.retrieveImage 或 ImageDownloader.default.downloadImage
这是我的 Swift 3 代码。我需要将图像放入通过 Kingfisher 缓存下载的数组中。实际上,图像现在显示在 cell.itemImage 中,但我无法将这些图像放入 UIImage 数组。
我正在使用 Kingfisher 库来下载和缓存图像。我在实现中遇到了一些问题: 图片是否同时缓存在内存和磁盘中? 有没有只在磁盘上缓存图片的规定? 我已经阅读了多篇关于此的文章,但找不到任何解决方案
我正在使用 xCode 13 beta 4,并希望将包含 Kingfisher 的项目归档。该应用程序在 iOS 15 下运行良好,但是当我试图将其存档时出现以下错误。有人知道我应该做什么吗?谢谢!
我使用 kingfisher 从 tableview 中的 url 加载图片。在我的 Controller 中,我有一个用于显示图片的表格 View ,一个用于使用新图片重新加载表格 View 的“下
我正在使用 Kingfisher 下载图像并将其设置为 UITableView 单元格中的 ImageView 。一切正常,表格 View 在下载新图像之前首先显示占位符图像。但是,只有在滚动 Tab
我是一名优秀的程序员,十分优秀!