我正在尝试在 SwiftUI 中制作一个选择器,并且在功能上运行良好。但无论出于何种原因,它将标题挤压到选择器的左侧,但我只想选择器在视图中居中。
这是我的代码:
import SwiftUI
struct FancyPicker: View {
let name: String
let options: [String]
let doneText = "Done"
let onSelection: (String)->Void
@State private var selection = 0
var body: some View {
VStack {
HStack {
Text(name)
Spacer()
Button(action: {
self.onSelection(self.options[self.selection])
}, label: {
Text(doneText)
})
}.padding()
Picker(selection: $selection, label: EmptyView()) {
ForEach(0 ..< options.count) { index in
Text(self.options[index]).tag(index)
}
}
}
}
}
struct FancyPicker_Previews: PreviewProvider {
static var previews: some View {
FancyPicker(name: "Test Picker", options: ["One", "Two", "Three"]) { selection in
print("Selected \(selection)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
您会注意到我将选择器标签设置为 an EmptyView,这是输出的样子:
有没有办法摆脱左侧的丑陋填充?选择器上方和下方还有额外的丑陋填充物,但我可以改天担心...
您必须隐藏标签才能使选择器居中。您还可以编辑高度并将其剪辑以具有自定义选取器高度。
var body: some View {
VStack {
Picker(selection: $selection, label: Text("") {
ForEach(0 ..< options.count) {
Text(self.options[$0]).tag($0)
}
}
.labelsHidden()
.frame(height: 50)
.clipped()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1332 次 |
| 最近记录: |