CachedAsyncImage 是一个 Swift 包,用于从网络异步加载图片并进行缓存。
dependencies: [
.package(url: "https://github.com/0xWDG/CachedAsyncImage.git", branch: "main"),
],
targets: [
.target(name: "MyTarget", dependencies: [
.product(name: "CachedAsyncImage", package: "CachedAsyncImage"),
]),
]
https://github.com/0xWDG/CachedAsyncImage
) 并点击 Next。CachedAsyncImage
具有与 AsyncImage
完全相同的 API 和行为,所以您只需将此
AsyncImage(url: logoURL)
改为此
CachedAsyncImage(url: logoURL)
示例
import SwiftUI
import CachedAsyncImage
struct ContentView: View {
var body: some View {
VStack {
CachedAsyncImage(
url: URL(
string: "https://wesleydegroot.nl/assets/avatar/avatar.webp"
)
) { image in
image
.resizable()
.frame(width: 250, height: 250)
} placeholder: {
ProgressView()
}
}
.padding()
}
}
除了 AsyncImage
初始化器,您还可以指定想要使用的缓存(默认使用 URLCache.shared
),并使用 URLRequest
而不是 URL
。
CachedAsyncImage(urlRequest: logoURLRequest, urlCache: .imageCache)
// URLCache+imageCache.swift
extension URLCache {
static let imageCache = URLCache(memoryCapacity: 512_000_000, diskCapacity: 10_000_000_000)
}
请记住,设置缓存时,响应(在本例中是我们的图像)的大小不得超过磁盘缓存的约 5%(参见 此讨论)。
🦋 @0xWDG 🐘 mastodon.social/@0xWDG 🐦 @0xWDG 🧵 @0xWDG 🌐 wesleydegroot.nl 🤖 Discord
对学习更多关于 Swift 的知识感兴趣吗? 查看我的博客。