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

时间:2019-06-10 08:17:50

标签: ios swiftui

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

List {
   // contents
}

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

5 个答案:

答案 0 :(得分:7)

iOS 14 beta1XCode 12 beta1开始,您可以将LazyHStack包裹在ScrollView中,以创建水平的项目懒惰列表,即,每个项目只能是按需加载:

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

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

ScrollView (.horizontal, showsIndicators: false) {
     HStack {
         //contents
     }
}.frame(height: 100)

答案 3 :(得分:1)

您可以使用.horizo​​ntal属性并使用自定义元素。对我来说,我使用cusomt CircleView

var body: some View {
    
    VStack{
        Divider()
        ScrollView(.horizontal){
            HStack(spacing:10){
                ForEach(0..<10){
                    index in
                    CircleView(label: "\(index)")
                }
            }.padding()
        }.frame(height:100)
        Divider()
        Spacer()
    }
    
}

}

//struct CircleView:View
@State var label:String
var body:some View {
    ZStack{
        Circle()
            .fill(Color.yellow)
            .frame(width: 70, height: 70)
        Text(label)
    }
}

}

答案 4 :(得分:0)

我正在使用Swift 5版本

SimpleDateFormat