SwiftUI ButtonStyleを作成する
角丸ラインのみボタンを作成する。
ViewModifierでやっていたのを、ButtonStyleに変更する。
Style Example
ViewModifier:ButtonDesignModifier
ButtonStyle:RoundedRectangleButtonStyle
Use Example
Button("+1 month", action: { }) .buttonStyle(RoundedRectangleButtonStyle(adjust: 4.0)) Button("+3 month", action: { }) .modifier(ButtonDesignModifier(adjust: 4.0))
ViewModifier & ButtonStyle Code
import Foundation import SwiftUICore import SwiftUI struct ButtonDesignModifier: ViewModifier { var adjust: CGFloat = 0.0 func body(content: Content) -> some View { return content .padding(EdgeInsets(top: 8.0 - self.adjust, leading: 16.0 - self.adjust, bottom: 8.0 - self.adjust, trailing: 16.0 - self.adjust)) .overlay { RoundedRectangle(cornerRadius: 8) .stroke(Color.blue, lineWidth: 1) } } } struct RoundedRectangleButtonStyle: ButtonStyle { typealias Body = Button var adjust: CGFloat = 0.0 func makeBody(configuration: Configuration) -> some View { configuration .label .foregroundColor(.blue) .padding(EdgeInsets(top: 8.0 - self.adjust, leading: 16.0 - self.adjust, bottom: 8.0 - self.adjust, trailing: 16.0 - self.adjust)) .overlay { RoundedRectangle(cornerRadius: 8) .stroke(Color.blue, lineWidth: 1) } } }