1

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

4

1 回答 1

6

那些在评论中说我们不需要为他们通过 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")
}
于 2020-04-28T10:02:16.310 回答