【Swift UI】ButtonStyleでカスタムデザインボタンの実装方法!

この記事からわかること
- SwiftのButtonとは?
- 構造や書式、使い方
- actionやプロパティ、@State
\ アプリをリリースしました /
環境
- Xcode:15.0.1
- iOS:17.1
- Swift:5.9
- macOS:Sonoma 14.1
ボタンのスタイルを変更する
Swift UIのButton
構造体のスタイルはbuttonStyle
モディファイアにPrimitiveButtonStyle
プロトコルの任意の値を渡すことで変更することができます。
PrimitiveButtonStyle型の種類
指定できる値はOSによって異なります。
スタイル名 | 概要 | 対応OS |
---|---|---|
DefaultButtonStyle | 標準のボタンスタイル | iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0 |
PlainButtonStyle | 背景色なし | iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0 |
BorderlessButtonStyle | 背景色なしテキストの下に下線 | iOS 13.0, macOS 10.15, tvOS 17.0, watchOS 8.0 |
BorderedButtonStyle | 背景色があり、角丸の矩形 | iOS 15.0, macOS 10.15, tvOS 13.0, watchOS 7.0 |
BorderedProminentButtonStyle | 背景色があり、角丸の矩形 | iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0 |
LinkButtonStyle | リンク風のボタンスタイル | iOS 14.0+, macOS 11.0+, Mac Catalyst 14.0+ |
CustomButtonStyle | カスタムボタンスタイル | iOS 14.0+, macOS 11.0+, Mac Catalyst 14.0+ |
公式リファレンス:PrimitiveButtonStyle型
実際のデザイン
実際に実装してみると以下のような感じになります。

カスタムボタンスタイルを実装する
ButtonStyle
プロトコルに準拠させた構造体を実装することでカスタムボタンスタイルを定義することができます。
中では@Environment(\.isEnabled)
でボタンの活性状態を取得できます。
ボタンが押されている状態はconfiguration.isPressed
で取得できます。
使用する際はbuttonStyle
メソッド内でインスタンス化するだけです。
もっとスマートに.buttonStyle(.thema)
のように呼び出したい場合はButtonStyle
をextension
して静的プロパティを追加すれば実装できます。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。