【SwiftUI】Toggle構造体の使い方!ON/OFF切り替えスイッチの実装

この記事からわかること
- SwiftUIでON/OFF切り替えスイッチを実装する方法
- Toggle構造体の使い方
- ラベルやスタイル、カラーの変更方法
- ToggleStyleでカスタムトグルボタンの作成方法
\ アプリをリリースしました /
SwiftUIでON/OFF切り替えスイッチの実装方法
Swift UIを使用してON/OFFを切り替えられるスイッチを実装するにはToggle
構造体を使用します。
参考文献: 公式リファレンス-Toggle構造体
toggle
は「留木」を意味する英単語でITの分野ではON/OFFの切り替えのような同じ操作で交互に切り替わるような仕組みを指し、ボタン機能と連動させた「トグルボタン」として使われることが多いです。
Swift UIでも以下のような「トグルボタン」が簡単に実装できるようになっています。

実装方法
トグルボタンを実装するためには切り替わる値を保持させる変数を用意し、Toggle構造体の引数にバインディングさせます。
イニシャライザは以下のようになっています。
色の変更
トグルボタンはデフォルトでは緑色で実装されますが色を変更したい場合はtint
モディファイアを使用します。

見た目の変更
デフォルトではラベルとボタンが表示されますがtoggleStyle
モディファイアを使用することでスタイル(見た目)を変更することができます。

スタイルはToggleStyle
プロトコルの値から選択できます。
iOSアプリ開発の場合はbutton
とswitch(automatic)
の2パターンが使用できます。
ToggleStyleでカスタムトグルボタンの作成
ToggleStyle
プロトコルに準拠させることでオリジナルにカスタマイズしたトグルボタンを作成することも可能です。
例えばiOSではデフォルトで実装できないチェックボックス式のトグルボタンを実装してみます。
実装手順は以下の通りです。
- ToggleStyleに準拠させた構造体を定義
- makeBodyメソッド内にボタンを定義
- 引数configurationから真偽値とラベルにアクセス
これで新しいトグルスタイルが定義できたのでtoggleStyle
モディファイアを使ってスタイルを反映させてみます。

タイププロパティとして以下のようにしておくことでより簡単に参照できるようになります。

おすすめ記事:【Swift】プロパティの種類!ストアドプロパティやタイププロパティとは?
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。