设置初始可见项 LazyGrid (swiftUI)
Set the initially visible item LazyGrid (swiftUI)
我正在尝试设置最初可见的项 LazyGrid (swiftUI)
想法是将初始值改为默认值 (0)
初始值变成了我选择的值,比如4
可以将网格移动到 0 和 9。
我有简单的网格
import SwiftUI
struct ContentView: View {
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
LazyHGrid(rows: [GridItem(.flexible(minimum: 200, maximum: 200))]) {
ForEach(0 ..< 10){ val in
ZStack{
Rectangle()
.foregroundColor(.gray)
.frame(width: 200, height: 200)
Text("\(val)")
.fontWeight(.bold)
.font(.title)
.foregroundColor(.white)
}
}
}
}
}
}
SwfitUI 2.0
有 ScrollViewReader
用于此目的。我们为视图提供 id
,并通过滚动视图代理指定哪个视图应该可见。
这是一个演示。测试 Xcode 12 / iOS 14
struct DemoView: View {
let initiail: Int = 4
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
ScrollViewReader { sp in
LazyHGrid(rows: [GridItem(.flexible(minimum: 200, maximum: 200))]) {
ForEach(0 ..< 10, id: \.self){ val in
ZStack{
Rectangle()
.foregroundColor(.gray)
.frame(width: 200, height: 200)
Text("\(val)")
.fontWeight(.bold)
.font(.title)
.foregroundColor(.white)
}.id(val)
}
}.onAppear { sp.scrollTo(initiail) }
}
}
}
}
我正在尝试设置最初可见的项 LazyGrid (swiftUI)
想法是将初始值改为默认值 (0)
初始值变成了我选择的值,比如4
可以将网格移动到 0 和 9。
我有简单的网格
import SwiftUI
struct ContentView: View {
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
LazyHGrid(rows: [GridItem(.flexible(minimum: 200, maximum: 200))]) {
ForEach(0 ..< 10){ val in
ZStack{
Rectangle()
.foregroundColor(.gray)
.frame(width: 200, height: 200)
Text("\(val)")
.fontWeight(.bold)
.font(.title)
.foregroundColor(.white)
}
}
}
}
}
}
SwfitUI 2.0
有 ScrollViewReader
用于此目的。我们为视图提供 id
,并通过滚动视图代理指定哪个视图应该可见。
这是一个演示。测试 Xcode 12 / iOS 14
struct DemoView: View {
let initiail: Int = 4
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
ScrollViewReader { sp in
LazyHGrid(rows: [GridItem(.flexible(minimum: 200, maximum: 200))]) {
ForEach(0 ..< 10, id: \.self){ val in
ZStack{
Rectangle()
.foregroundColor(.gray)
.frame(width: 200, height: 200)
Text("\(val)")
.fontWeight(.bold)
.font(.title)
.foregroundColor(.white)
}.id(val)
}
}.onAppear { sp.scrollTo(initiail) }
}
}
}
}