Пользовательская кнопка SwiftUI в списке
Я пытаюсь создать пользовательскую кнопку в списке SwiftUI. Я хочу, чтобы у него был синий фон с белым текстом, и, что важно, чтобы он оставался синим и при непрозрачности от go до 50%, а не по умолчанию серым.
Я пытался использовать пользовательский ButtonStyle, но когда я сделайте так, площадь нажатия кнопки уменьшится до самой метки. Если я коснусь любой другой части ячейки, цвет не изменится. Если я удалю ButtonStyle, то нажатие в любом месте ячейки сработает
Как это исправить, чтобы получить свои собственные цвета, в том числе цвет при касании, но вся ячейка все еще может быть изменена?
import SwiftUI
struct BlueButtonStyle: ButtonStyle {
func makeBody(configuration: Self.Configuration) -> some View {
configuration.label
.font(.headline)
.foregroundColor(configuration.isPressed ? Color.white.opacity(0.5) : Color.white)
.listRowBackground(configuration.isPressed ? Color.blue.opacity(0.5) : Color.blue)
}
}
struct ExampleView: View {
var body: some View {
NavigationView {
List {
Section {
Text("Info")
}
Section {
Button(action: {print("pressed")})
{
HStack {
Spacer()
Text("Save")
Spacer()
}
}.buttonStyle(BlueButtonStyle())
}
}
.listStyle(GroupedListStyle())
.environment(\.horizontalSizeClass, .regular)
.navigationBarTitle(Text("Title"))
}
}
}
struct ExampleView_Previews: PreviewProvider {
static var previews: some View {
ExampleView()
}
}