SwiftUI で新しい AsyncImage を使用して、タイトル付きの画像の長いリストを表示しようとしています。AsyncImage の周りに VStack を配置して画像をスクロールすると、上下にスクロールするたびに画像がリロードされることに気付きました。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)
}
}
}
}
}
}
}