相关疑难解决方法(0)

在 LazyVStack 中使用 VStack 和 AsyncImage 会导致图像在滚动时重新加载

我正在尝试使用 SwiftUI 中的新 AsyncImage 显示一长串带有标题的图像。我注意到,当我将 VStack 放在 AsyncImage 周围并滚动图像时,每次向上或向下滚动时它都会重新加载图像。当没有 VStack 时,我看不到重新加载,并且图像似乎保留在缓存中。

有没有办法让 VStack 在滚动时不重新加载图像,以便我可以在每个图像下添加文本?

这是一个工作示例。尝试使用和不使用 VStack 进行滚动。

import SwiftUI

struct TestView: View {

    let url = URL(string: "https://picsum.photos/200/300")

    let columns: [GridItem] = [.init(.fixed(110)),.init(.fixed(110)),.init(.fixed(110))]

    var body: some View {
        ScrollView {
            LazyVGrid(columns: columns) {
                ForEach(0..<20) { _ in
                    // VStack here causes to images to reload on scrolling
                    VStack {
                        AsyncImage(url: url) { image in
                            image
                                .resizable()
                                .aspectRatio(contentMode: .fit)
                        } placeholder: {
                            Image(systemName: "photo")
                                .imageScale(.large)
                                .frame(width: 110, height: 110)
                        }
                    } …
Run Code Online (Sandbox Code Playgroud)

swift swiftui swiftui-list lazyvgrid

16
推荐指数
1
解决办法
6075
查看次数

标签 统计

lazyvgrid ×1

swift ×1

swiftui ×1

swiftui-list ×1