ios - Kingfisher 加载缓存图像

标签 ios swift kingfisher

我的 API 返回 2 种类型的照片:小照片和大照片

我使用 kingfisher 加载照片,并且总是先加载小照片。当我加载大照片时我想实现这一点

if hasCacheSmallPhoto {
  imageView.kf.setImage(with: bigImageUrl, placeholder: cacheImage)
} else {
  imageView.kf.setImage(with: bigImageUrl, placeholder: defaultPlaceHolderImage)
}

如何使用 kingfisher 正确实现这一目标

最佳答案

您需要先检查kingFisher Cache是​​否缓存了小图像。

    if ImageCache.default.isCached(forKey:smallImageUrl) {

     ImageCache.default.retrieveImage(forKey: smallImageUrl) { result in
    switch result {
    case .success(let value):

       imageView.kf.setImage(with: bigImageUrl, placeholder: value.image)

    case .failure(let error):
        print(error)
    }
}   
}
else {
     imageView.image = defaultPlaceHolderImage
     imageView.kf.setImage(with: smallImageUrl) { result in
    // `result` is either a `.success(RetrieveImageResult)` or a `.failure(KingfisherError)`
    switch result {
    case .success(let value):
        // The image was set to image view:
        imageView.kf.setImage(with: bigImageUrl, placeholder: value.image)


        // The source object which contains information like `url`.
        print(value.source)

    case .failure(let error):
        print(error) // The error happens
    }
}
}

关于ios - Kingfisher 加载缓存图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54101473/

相关文章:

ios - 我可以从AdHoc版本进行实际的IAP购买吗?

ios - 将图像从 Swift 文件(不是 ViewController)传递到 ViewController

ios - ScrollView 中按钮的中心

ios - 通过 Kingfisher 在 UIImage 上加载 gif

ios - 翠鸟图像加载错误

ios - 'isRunningInStoreDemoMode' 什么时候为真?

ios - 如何在 iOS sdk 的本地资源 txt 文件中 append 字符串

ios - 计算 GMSPolygon 面积

ios - 增加 UIPageControl 指示点之间的间距

ios - 翠鸟: 'setBackgroundImage(with:for:placeholder:options:progressBlock:completionHandler:)' 的使用不明确