Отображение сегментированного средства выбора при внутреннем размере в SwiftUI

#ios #swiftui #width #picker #segmentedcontrol

#iOS #swiftui #ширина #средство выбора #segmentedcontrol

Вопрос:

В SwiftUI Picker элемент стиля SegmentedPickerStyle занимает всю ширину его окружающего представления. Как я могу вместо этого заставить его занимать только требуемую ширину?

Подумайте об этом: Сегментированное средство выборакоторый генерируется следующим кодом:

 struct ContentView: View {
    @State var value = 1
    var body: some View {
        Picker("Value", selection: $value) {
            Text("One").tag(1)
            Text("Two").tag(2)
        }
        .pickerStyle(SegmentedPickerStyle())
        .padding()
    }
}
 

Как я могу удалить большие поля из двух вариантов выбора, сделав средство выбора только таким широким, каким оно должно быть? Это кажется очень простым вопросом, но ответ ускользает от меня.

Ответ №1:

Используйте фиксированный размер, как показано ниже

ДЕМОНСТРАЦИЯ

     Picker("Value", selection: $value) {
        Text("One").tag(1)
        Text("Two").tag(2)
    }
    .pickerStyle(SegmentedPickerStyle())
    .fixedSize()                           // << here !!
 

Комментарии:

1. Идеальный. Это именно то, что я искал, и это будет полезно мне и в нескольких других ситуациях. Спасибо, @Asperi!

2. Вы знаете, как я могу увеличить высоту средства выбора? Я попробовал .frame(высота: 40), но это не изменяет высоту сегментированного элемента управления