ボタンにアイコン画像を表示する

ボタンにアイコン画像を表示する方法を紹介します。下記に示すような表示になります。

Button の label モディファイアで設定します。アイコン画像の名前は SF Symbols アプリで調べて、お気に入りのものを設定してみてください。

Button( action: {
    // ここに動かしたいコードを記述する.
    // たとえばボタン有効or無効トグルなど.
}, label: {

    // お好みのアイコンを指定する.
    Image( systemName: "video" )
        .resizable()
        .scaledToFit()
        .padding()

})
.frame( width: 200.0, height: 160.0 )
.foregroundColor( .white )
.background( .blue )
.cornerRadius( 8.0 )

実際に動くコード

ボタンを押してそれぞれのアクティブ、ノンアクティブのフラグをトグルします。

"video" のアイコンのボタンは、フラグで背景色を切り替えています。
"phone" のアイコンのボタンは、フラグでアイコンの種類と背景色を切り替えています。

import SwiftUI

struct ContentView: View {

    @State var flag0: Bool = false
    @State var flag1: Bool = false

    let BTN_W = 200.0
    let BTN_H = 160.0
    let BTN_R =   8.0

    var body: some View {

        VStack {

            Spacer()

            Button( action: {
                flag0 = !flag0
            }, label: {

                Image( systemName: "video" )
                    .resizable() // これを忘れないように.
                    .scaledToFit()
                    .padding() // これがないとフレームギリギリまで表示されてしまう.

            })
            .frame( width: BTN_W, height: BTN_H )
            .foregroundColor( .white )
            .background( flag0 ? .red : .blue )
            .cornerRadius( BTN_R )

            Spacer()

            Button( action: {
                flag1 = !flag1
            }, label: {

                Image( systemName: flag1 ? "phone.arrow.down.left" : "phone" )
                    .resizable()
                    .scaledToFit()
                    .padding()

            })
            .frame( width: BTN_W, height: BTN_H )
            .foregroundColor( .white )
            .background( flag1 ? .red : .green )
            .cornerRadius( BTN_R )

            Spacer()

        }

    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}