【问题标题】:Picker in Form Leaves Leading Space in SwiftUI表单中的选取器在 SwiftUI 中留下领先空间
【发布时间】:2020-09-15 09:29:51
【问题描述】:

我正在尝试在 WheelStyle 内的表单中显示 PickerView。它运行良好,但我想回顾一些领先的空间。

这是我的代码。

struct FormTest: View {
    
    var aryStrings = ["Male","Female"]
    
    @State var selected:String = ""
        
    var body: some View {
        Form {
            Section {
                VStack {
                    HStack {
                        Text("Gender")
                        Spacer()
                    }.padding()
                    
                    HStack {
                        Picker(selection: self.$selected, label: Text("")) {
                            ForEach(self.aryStrings, id:\.self) { value in
                                Text(value)
                            }
                        }.pickerStyle(WheelPickerStyle())
                    }
                }.listRowInsets(EdgeInsets())
            }
        }
    }
} 

我们可以看到这里有一个标记为红色的前导空格。我希望它是全尺寸的选择器。

任何帮助将不胜感激。

【问题讨论】:

    标签: ios swift forms swiftui picker


    【解决方案1】:

    我假设您正在寻找这个(使用 Xcode 11.7 / iOS 13.7 测试)

    var body: some View {
        Form {
            Section {
                VStack {
                    HStack {
                        Text("Gender")
                        Spacer()
                    }.padding()
    
                    Picker(selection: self.$selected, label: Text("")) {
                         ForEach(self.aryStrings, id:\.self) { value in
                              Text(value)
                         }
                    }.pickerStyle(WheelPickerStyle())
                    .labelsHidden()                    // << main part !!
                }
            }
        }
    }
    

    【讨论】:

    • 还没想过这个标签。感谢您的帮助。
    • 有什么办法可以拉伸这些水平线吗?
    【解决方案2】:

    虽然它在 iOS 14 中不是问题:

    在 iOS 13 中,选择器无法拉伸其宽度。所以你需要做这样的事情:

    HStack {
        Spacer()
        Picker(selection: self.$selected, label: EmptyView()) {
            ForEach(self.aryStrings, id:\.self) { Text($0) }
        }
        .pickerStyle(WheelPickerStyle())
        .fixedSize()
        Spacer()
    }
    

    结果会是这样的:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      相关资源
      最近更新 更多