[SwiftUI] Button を簡単に作成する

SwiftUIではButtonのactionをどのように扱うのか見てみましょう。

Xcode 13.4.1

Button

 
SwiftUIのButtonはUIButtonに比べて柔軟に作られています。最初からボタン枠があるわけではなく、文字だったり画像だったりします。
なのでButtonをImageで作成するのも簡単です。

ボタンのタップで状態を変化させるために、@State を使うところがポイント。
 

 

ボタンの設定

 
基本的な設定には以下の2つが必要です。

  1. タップされたときのaction
  2. タップされるボタン本体がどのようなものか

「+」ボタンでViewsリストから Button を選んで
PreView上の Hello world! の下にドラッグ&ドロップで配置

Buttonコード同時に作成されます

ContentViewのbodyに直に記述することもできます。

コードでは、


 
actionとそれによる事象を記述していきます。

ボタンをタップするとボタンの文字が「Button Tapped」になるコードは、
 


Buttonの文字は最初の buttonText の設定で 「Button」 ですが
ボタンタップのactionで文字を「Button Tapped」に変更します。
 

@State SwiftUIでのViewは状態を持たないstructなので、そのままではプロパティを変更できない作りになっています。
状態を変更する場合は @State を宣言しメモリの管理を SwiftUIフレームワーク に反映させて値を更新します。

 
Previewでこれを確認してみましょう。

 

Previewでボタンactionの確認

 
Previewでボタンの挙動を確認するために、左上にある丸に三角のアイコン
「Live Preview」ボタンをクリックします。
(ボタンの位置がXcodeで変わっているかもしれません)

これでButtonをタップすると、

ボタンの文字が変わりました。

尚、コードがエラーになっていると実行されません
また、Previewがグリーンになっていない場合には「Resume」をもう一度クリックしてみます。

Simulatorを起動させても同じように確認することができます。

 

actionでTextを変更する

 
Button actionでTextの文字を変えることをUIKitでやりましたが、これをSwiftUIで同様に作ってみます。

https://i-app-tec.com/ios/button.html

ボタンタップでに文字を変える流れです。
 


 
SwiftUIではToggleを使ってBool値の反転をさせることもできます。


 
「Resume」をクリックしてLive Previewボタンで確認してみましょう

VStack:
ViewのレイアウトでVerticalつまり垂直に並べる時に使います。水平方向はHStackです。

Modifiers:
InspectorあるいはPreviewから文字のフォント、色、背景、paddingなどを変更できます。

ボタンを角丸枠にするのも簡単です。Buttonに.overlayの設定


角丸ボタンになりました。

 

Button本体をImageで作る

 
ボタン本体を画像にするために、Image()を設定します。
画像の設定は、以下を参考にしてください。
 

 
例として猫のイラストを2つ、cat_01.png とcat_02.png をAssetsに入れます


ボタンアクションで画像が変わるようにcatsというプロパティを@Stateで設定します。
 


 
ボタンタップで文字列と猫の画像が変わるようにできました。

 
 
References:
Button – SwiftUI | Apple Developer Documentation
VStack – SwiftUI | Apple Developer Documentation
State – SwiftUI | Apple Developer Documentation


誤字脱字、意味不明などのご意見は 謙: e-mail まで
ブックマークしておくと便利です このエントリーをはてなブックマークに追加
Twitter:


シェアする

  • このエントリーをはてなブックマークに追加

フォローする