CachedAsyncImage

CachedAsyncImage 是一个 Swift 包,用于从网络异步加载图片并进行缓存。

Swift Package Manager License

要求

安装 (Pakage.swift)

dependencies: [
    .package(url: "https://github.com/0xWDG/CachedAsyncImage.git", branch: "main"),
],
targets: [
    .target(name: "MyTarget", dependencies: [
        .product(name: "CachedAsyncImage", package: "CachedAsyncImage"),
    ]),
]

安装 (Xcode)

  1. 在 Xcode 中,打开您的项目并导航至 FileSwift PackagesAdd Package Dependency...
  2. 粘贴仓库 URL (https://github.com/0xWDG/CachedAsyncImage) 并点击 Next
  3. 点击 Finish

用法

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 的知识感兴趣吗? 查看我的博客