【问题标题】:How can I use KingFisher library for images that are in assets folder, Swift?如何将 KingFisher 库用于资产文件夹 Swift 中的图像?
【发布时间】:2019-01-09 09:09:57
【问题描述】:

我正在使用 kingfisher 库,但我的问题是我不能将它用于存储在资产中的图像 - 所有 kingfisher 方法都需要 url,那么我如何将它用于资产?

【问题讨论】:

  • Kingfisher 库用于从网络下载图像并将其存储在缓存中。它减少了网络使用量,并允许应用程序在需要多次加载相同的图像时重复使用。无需为资产图像使用吸库。
  • KingFisher 是一个用于管理下载和缓存 remote 图像的库。它不是为本地图像设计的,也不需要。只需将 UIImage(named: "whatever") 用于资产
  • 我知道如何使用本地文件,但我想对这些图像使用 King Fisher 过滤器,所以我不能对资产使用 King Fisher 对吗?
  • 我假设您可以使用本地 URL 指向图像,但由于资产是专门存储的,我认为您无法做到这一点 - 请查看 stackoverflow.com/questions/21769092/…
  • 您到底在寻找什么“过滤器”?

标签: ios swift swift4 assets kingfisher


【解决方案1】:

那些在 cmets 中说我们不需要为他们通过 kingfisher 从 Assets 加载本地图像的人,有一个场景,例如当我们在 UITableView 中加载图像时,在 if 条件下我们从远程加载图像URL,在其他情况下,我们从本地资产加载。在这种情况下,如果我们直接使用UIImage(...) 方法分配图像,TableView 图像将开始表现异常。所以我们需要通知 Kingfisher 我们已经直接更改了图像并且在从远程 URL 加载时不要更新它。 对于这种场景,可以使用如下代码

import Kingfisher

 //////// In your cellForRowAt method

if (loadThroughRemoteURL) {
    cell.imageView.kf.setImage(with: URL(string: "YOUR_REMOTE_IMAGE_URL"))
} 
else { // loading through local assets
       let resource: Resource? = nil
       cell.imageView.kf.setImage(with: resource) // inform kingfisher that you are assigning this image by your own
       cell.imageView.image = UIImage(named: "your_image_in_assets")
}

【讨论】:

    猜你喜欢
    • 2015-02-06
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    相关资源
    最近更新 更多