#ios #swift #forms #swiftui #picker
#iOS #swift #формы #swiftui #средство выбора
Вопрос:
Я пытаюсь отобразить pickerView в WheelStyle внутри формы. Он работает нормально, но есть некоторое ведущее пространство, которое я хотел бы просмотреть.
Вот мой код.
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())
}
}
}
}
Здесь, как мы можем видеть, есть начальное пространство, которое помечено красным. Я хочу, чтобы это было полноразмерное средство выбора.
Любая помощь будет оценена.
Ответ №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 !!
}
}
}
}
Комментарии:
1. Не думал об этом ярлыке. Спасибо за помощь.
2. есть ли какой-либо способ растянуть эти горизонтальные линии?
Ответ №2:
Хотя это не проблема в iOS 14:
В iOS 13 средства выбора не могут растягивать свою ширину. Итак, вам нужно сделать что-то вроде этого:
HStack {
Spacer()
Picker(selection: self.$selected, label: EmptyView()) {
ForEach(self.aryStrings, id:.self) { Text($0) }
}
.pickerStyle(WheelPickerStyle())
.fixedSize()
Spacer()
}
И результат был бы таким: