Как сделать стилизованный сборщик полностью осязаемым

#swift #swiftui #swiftui-picker

#swift #swiftui #swiftui-средство выбора

Вопрос:

Я разработал средство выбора следующим образом:

 Picker(selection: $selectedProduct, label: Text("Product: (self.products[self.selectedProduct].name!)")) {
                
                ForEach(0 ..< roles.count) {
                    Text(products[$0].name!)
                        .frame(minWidth: 0, maxWidth: .infinity)
                }
                
            }
            .animation(nil)
            .frame(minWidth: 0, maxWidth: .infinity)
            .font(.headline)
            .foregroundColor(Color.white)
            .padding()
            .background(Color(UIColor(.blue)))
            .cornerRadius(15.0)
            .pickerStyle(MenuPickerStyle())
            
 

Это создает стиль, который я хочу, как показано ниже:

введите описание изображения здесь

К сожалению, осязаемой является только область вокруг метки:

введите описание изображения здесь

Я не могу понять, как сделать все это осязаемым. Я что-то упускаю?

Любая помощь была бы очень признательна.

Ответ №1:

Попробуйте применить все модификаторы, связанные с размером / рамкой, к внутренней метке, а не к самому средству выбора, например

    Picker(selection: $selectedProduct, label: 
      Text("Product: (self.products[self.selectedProduct].name!)")
         .frame(minWidth: 0, maxWidth: .infinity)
         .font(.headline)
         .foregroundColor(Color.white)
         .padding()
         .background(Color(UIColor(.blue)))
         .cornerRadius(15.0)
   ) {
            
        ForEach(0 ..< roles.count) {
            Text(products[$0].name!)
                .frame(minWidth: 0, maxWidth: .infinity)
        }
        
    }
    .animation(nil)
    .pickerStyle(MenuPickerStyle())