GradientButtonStyle.swift (1309B)
1 // 2 // GradientButtonStyle.swift 3 // damus 4 // 5 // Created by eric on 5/20/23. 6 // 7 8 import SwiftUI 9 10 struct GradientButtonStyle: ButtonStyle { 11 let padding: CGFloat 12 13 init(padding: CGFloat = 16.0) { 14 self.padding = padding 15 } 16 17 func makeBody(configuration: Self.Configuration) -> some View { 18 return configuration.label 19 .padding(padding) 20 .foregroundColor(Color.white) 21 .background { 22 RoundedRectangle(cornerRadius: 12) 23 .fill(PinkGradient) 24 } 25 .scaleEffect(configuration.isPressed ? 0.95 : 1) 26 } 27 } 28 29 30 struct GradientButtonStyle_Previews: PreviewProvider { 31 static var previews: some View { 32 VStack { 33 Button(action: { 34 print("dynamic size") 35 }) { 36 Text(verbatim: "Dynamic Size") 37 } 38 .buttonStyle(GradientButtonStyle()) 39 40 41 Button(action: { 42 print("infinite width") 43 }) { 44 HStack { 45 Text(verbatim: "Infinite Width") 46 } 47 .frame(minWidth: 300, maxWidth: .infinity, alignment: .center) 48 } 49 .buttonStyle(GradientButtonStyle()) 50 .padding() 51 } 52 } 53 }