繁体   English   中英

表单中的选择器在 SwiftUI 中留下了领先空间

[英]Picker in Form Leaves Leading Space in SwiftUI

我正在尝试在窗体内的 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())
            }
        }
    }
} 

如我们所见,这里有一个标记为红色的前导空格。 我希望它是全尺寸选择器。

任何帮助将不胜感激。

在此处输入图片说明

我假设您正在寻找这个(使用 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 !!
            }
        }
    }
}

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

在 iOS 13 中,选择器不能拉伸它们的宽度。 所以你需要做这样的事情:

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

结果将是这样的:

iOS 13

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM