Индикаторы выбора SwiftUI Picker не учитывают ширину рамки - PullRequest
1 голос
/ 16 июня 2020

Я успешно пытаюсь добавить 2 сборщика в HStack, используя считыватель геометрии, чтобы установить ширину рамки сборщика. Индикаторы выбора, однако, не учитывают ширину рамки. Проблема в том, что линии между ними выглядят по-разному из-за перекрытия. Кто-нибудь знает, как исправить эту проблему, или это невозможно, поскольку вы не можете настроить индикатор выбора, как указано в документации ?

let range = Range(0...60)
@State index = 0

var body: some View {
   VStack {
      GeometryReader { geometry in
         HStack(spacing: 0) {
            Picker(selection: $index, label: Text("")) {
               ForEach(range) { index in
                  Text("\(index)").tag(index)
               }
            }
            .labelsHidden()
            .frame(width: geometry.size.width / 2)

            Picker(selection: $index, label: Text("")) {
               ForEach(range) { index in
                  Text("\(index)").tag(index)
               }
            }
            .labelsHidden()
            .frame(width: geometry.size.width / 2)
         }
      }
   }
}

HStack with 2 pickers HStack with 1 picker

1 Ответ

2 голосов
/ 16 июня 2020

Используйте .clipped для обоих, как показано ниже

Picker(selection: self.$index, label: Text("")) {
    ForEach(self.range) { index in
        Text("\(index)").tag(index)
    }
}
.labelsHidden()
.frame(width: geometry.size.width / 2)
.clipped()                                  // << here !!
...