Change button background colour on tap in SwiftUI
For doinng this you need to give the colour as per the state changed:
struct CustomButton: View {
@State private var didTap:Bool = false
var body: some View {
Button(action: {
self.didTap = true
}) {
Text("My custom button")
.font(.system(size: 24))
}
.frame(width: 300, height: 75, alignment: .center)
.padding(.all, 20)
.background(didTap ? Color.blue : Color.yellow)
}
}
PS: If you want to manage other states too then you can go for the enum
.
Just in case somebody wanted different way of doing this. It works for more colors.
struct CustomButton: View {
@State private var buttonBackColor:Color = .yellow
var body: some View {
Button(action: {
//This changes colors to three different colors.
//Just in case you wanted more than two colors.
if (self.buttonBackColor == .yellow) {
self.buttonBackColor = .blue
} else if self.buttonBackColor == .blue {
self.buttonBackColor = .green
} else {
self.buttonBackColor = .yellow
}
//Same code using switch
/*
switch self.buttonBackColor {
case .yellow:
self.buttonBackColor = .blue
case .blue:
self.buttonBackColor = .green
default:
self.buttonBackColor = .yellow
}
*/
}) {
Text("My custom button")
.font(.system(size: 24))
}
.frame(width: 300, height: 75, alignment: .center)
.padding(.all, 20)
.background(buttonBackColor)
}
}