提问人:wahnaton 提问时间:11/6/2023 最后编辑:soundflixwahnaton 更新时间:11/7/2023 访问量:23
垂直和水平延迟加载 SwiftUI 网格表
Lazy loading SwiftUI grid sheet both vertically and horizontally
问:
我试图构建一个在垂直轴和水平轴上延迟加载的网格视图,主要目标是为员工列表构建日历。列表和日历间隔都可能非常大,因此必须延迟呈现它们。我试过了,但它们只在一个方向上懒惰地呈现视图。进一步的方法对整个视图使用一个视图,对每行使用一个,加载是延迟的(在控制台中检查打印),但是在滚动视图时,它会失去它们的位置并且网格被破坏。我还需要固定的标头,这是在代码中使用 .LazyHGrid
LazyVGrid
LazyVStack
LazyHStack
pinnedViews
struct ContentView: View {
var body: some View {
ScrollView([.horizontal, .vertical]) {
LazyVStack(spacing: 20, pinnedViews: .sectionHeaders) {
Section(header: columnHeaders) {
ForEach(0..<20) { row in
LazyHStack(spacing: 20, pinnedViews: .sectionHeaders) {
Section(header: rowHeader(with: "Employee \(row)")) {
ForEach(0..<100) { column in
Text("Cell \(row), \(column)")
.foregroundColor(.white)
.font(.largeTitle)
.frame(width: 200, height: 100)
.background(Color.red)
.onAppear {
print("Cell \(row), \(column)")
}
}
}
}
}
}
}
}
}
var columnHeaders: some View {
LazyHStack(spacing: 20, pinnedViews: .sectionHeaders) {
Section(header: rowHeader(with: "")) {
ForEach(0..<100) { column in
Text("Header \(column)")
.frame(width: 200, height: 100)
.background(Color.white)
}
}
}
}
func rowHeader(with label: String) -> some View {
Text(label)
.frame(width: 100, height: 100)
.background(Color.white)
}
}
尝试了上面所说的。
答: 暂无答案
评论