Средство выбора в форме оставляет ведущее пространство в SwiftUI

#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 14

В iOS 13 средства выбора не могут растягивать свою ширину. Итак, вам нужно сделать что-то вроде этого:

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

И результат был бы таким:

iOS 13