如何在SwiftUI中创建水平列表?

iOS*_*com 4 ios swiftui

我可以将所有视图包装在列表中

List {
   // contents
}
Run Code Online (Sandbox Code Playgroud)

但这似乎是垂直滚动。如何使其水平?

JAH*_*lia 15

iOS 14 beta1&开始,XCode 12 beta1您将能够包含LazyHStack在 a 中ScrollView以创建项目的水平惰性列表,即,每个项目将仅按需加载:

ScrollView(.horizontal) {
            LazyHStack {
                ForEach(0...50, id: \.self) { index in
                    Text(String(index))
                        .onAppear {
                            print(index)
                        }
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)


Mo *_*ani 11

要制作水平滚动内容,您可以将 a 包裹HStack在 a 中ScrollView

ScrollView {
  HStack {
    ForEach(0..<10) { i in
      Text("Item \(i)")
      Divider()
    }
  }
}
.frame(height: 40)
Run Code Online (Sandbox Code Playgroud)

  • 这不会重用 view-s,所以不确定它是好的解决方案。另外,我在任何地方都没有看到横向列表的示例,也许我们需要稍等一下:) (5认同)
  • 我检查了层次结构,看起来 `List` 构建在 `UITableView` 之上,并且它也回收了单元格;`ScrollView` 中的 `HStack` 不会回收,如果您尝试调试层次结构,您将看到滚动视图边界之外的所有视图 (4认同)

Aki*_*ala 10

您需要将.horizontal属性添加到滚动视图。否则它不会滚动。

ScrollView (.horizontal, showsIndicators: false) {
     HStack {
         //contents
     }
}.frame(height: 100)
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个列表,它同时呈现所有内容 (10认同)