gpt4 book ai didi

swift - List SwiftUI 中的粘性页脚

转载 作者:行者123 更新时间:2023-12-03 19:10:05 25 4
gpt4 key购买 nike

我正在尝试在 SwiftUI 的 ListView 中实现粘性页脚
它的操作似乎与每个说的标题不同。这是粘性 header 实现的示例

     List {
ForEach(0..<10) { index in
Section(header: Text("Hello")) {
ForEach(0..<2) { index2 in
VStack {
Rectangle().frame(height: 600).backgroundColor(Color.blue)
}
}
}.listRowInsets(EdgeInsets())
}
}
以上给出了粘性标题的情况。虽然,一旦我将 Section(header: ... 更改为 Section(footer:... 它似乎不再粘稠了,它只是放在行的末尾。
更明确的引用
 List {
ForEach(0..<10) { index in
Section(footer: Text("Hello")) {
ForEach(0..<2) { index2 in
VStack {
Rectangle().frame(height: 600).backgroundColor(Color.blue)
}
}
}.listRowInsets(EdgeInsets())
}
}
有没有人对此有任何解决方案?

最佳答案

使用最新的 SwiftUI (2),我们现在可以访问更多 API
对于初学者,我们可以使用带有 LazyVStackScrollView 来为我们提供非常好的性能,然后我们可以使用 pinnedViews API 在数组中指定我们想要固定或设置粘性的补充 View 。然后我们可以使用包装我们的内容并指定页脚或页眉的部分 View 。
** 此代码从 Xcode beta 2 开始运行 **
至于在 List 中使用它,我不太确定,看看 ListLazy... 的性能会很有趣

struct ContentView: View {
var body: some View {
ScrollView {
LazyVStack(spacing: 10, pinnedViews: [.sectionFooters]) {
ForEach(0..<20, id: \.self) { index in
Section(footer: FooterView(index: index)) {
ForEach(0..<6) { _ in
Rectangle().fill(Color.red).frame(height: 100).id(UUID())
}
}
}
}
}
}
}

struct FooterView: View {

let index: Int

var body: some View {
VStack {
Text("Footer \(index)").padding(5)
}.background(RoundedRectangle(cornerRadius: 4.0).foregroundColor(.green))
}
}


struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

关于swift - List SwiftUI 中的粘性页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62484647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com