swift - Kingfisher KFImage 如何让它在 URL 改变的情况下加载缓存?
问题描述
我想要达到的目标
我希望 KFImage 始终从内存和磁盘缓存中读取,而不是每次都重新下载图像。每次视图加载时,用户将获得流畅的体验,而不会看到下载的图像几秒钟。
怎么了
KFImage 视图从profileImages
变量中加载其图像,该变量被初始化为空列表。该列表在调用之前不会填充 URL,getProfileImage()
这需要几秒钟。
即使图像 URL 相同,在视图出现后也会有几秒钟的间隙,因此 KFImage 不会从其缓存中加载,需要重新下载图像。即使 URL 更改,是否可以使 KFImage 视图始终从缓存中加载?或者我的问题有其他解决方案吗?
import KingfisherSwiftUI
struct ProfileSubview: View {
@State var profileImages: [URL] = []
var body: some View {
ForEach(0..<profileImages.count, id: \.self){index in
KFImage(profileImages[index])
}
}
.onAppear{
getProfileImage()
}
}
func getProfileImage(){
let metadata = StorageMetadata()
metadata.contentType = "image/jpeg"
let storage = Storage.storage().reference().child("User_Profile")
storage.downloadURL{url, error in
if let error = error{
print("Error downloading image, \(error)")
}
profileImages.append(url!)
}
}
解决方案
推荐阅读
- r - 将 r 文件写入 csv——“找不到对象”
- linux - 如何解决 EC2 上的 JIRA 安装问题?
- swift - OpenGL中的glVertexAttribPointer()最后一个属性值可以是一个数组吗?
- c# - 连接到本地计算机上的 .mdf 数据库
- javascript - 从 .txt 导入的谷歌地图图钉
- javascript - 我没有从 module.exports 得到答案
- c# - DetachedLazyLoadingWarning 的 Entity Framework Core 2.1 问题
- ios - Swift 4 JSONEncoder 返回空的 JSON 数组
- vmware - 在 Vmware 中使用 Host-Machine 共享 Internet 网络托管 WebApplication
- reactjs - React - prevstate issues, getting back old value