代码之家  ›  专栏  ›  技术社区  ›  Chris

PickerView:如何在没有空间的情况下水平居中?

  •  0
  • Chris  · 技术社区  · 4 年前

    我有这个代码。

    不幸的是,pickerview没有水平居中,按钮和pickerview(垂直)之间的空间太大,我现在可以使用偏移,但有更好的方法吗?

       var body: some View {
            NavigationView {
                Form {
                    Section(header: Text("Hi"), content: {
                        Button("Alphabet") {
                        }.frame(alignment: .center)
                        Button("Ok") {
                        }.frame(alignment: .center)
                        HStack {
                            Picker(selection: $sortedBy,
                                   label: Text(""),
                                   content: {
                                    ForEach(p, id: \.self) { category in
                                        Text(category)
                                    }
                                }).pickerStyle(WheelPickerStyle())
                        }
                    })
                }
            }
        }
    

    enter image description here

    @赖纳·费舍尔。。。这是你的提议的结果(不幸的是没有居中)

    enter image description here

    0 回复  |  直到 4 年前
        1
  •  -1
  •   Reiner Fischer    4 年前

    问题是你的标签是空的

     label: Text(""),
    

    即使标签是空的,它也会在拾取器的左侧占用一些空间。您只需在标签上添加一些文本即可进行检查。

    要去掉标签,请按如下方式调整代码:

    .pickerStyle(WheelPickerStyle())
    .labelsHidden()
    

    这将使您的选择器选择居中

    更新时间:2020年2月21日

    嗨,Chris,随函附上我测试过的代码,它位于选择器的中心:

    struct PickerView: View {
    
    let p:[Vital] = [
        .init(name: "0"),
        .init(name: "1"),
        .init(name: "2"),
        .init(name: "3")
    ]
    
    @State private var sortedby = 0
    
    var body: some View {
    
            Picker(selection: $sortedby, label: Text("")) {
                ForEach(p) { post in
                   Text(post.name)
                }
            }.pickerStyle(DefaultPickerStyle())
             .labelsHidden()
        }
    }
    

    enter image description here