[SwiftUI]Buttonが押している間かどうか判断するには?

SwiftUI

どうも、ちょげ(@chogetarou)です。

Buttonがタップ中かどうかを知る方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

Buttonが押している間かどうかを判断するには、ButtonStyleを使います。

まず、ButtonStyleの構造体を作成します。

struct TapButtonStyle : ButtonStyle {
    func makeBody(configuration: Configuration) -> some View {
        configuration.label //Buttonの本体
    }
}

そして、makeBodyメソッドの引数「configuration」の「isPressed」プロパティでタップ中かどうかを判断します。

isPressedプロパティは、押している間は「true」、押していない間は「false」になります。

configuration.isPressed //押している間は「true」、そうでなければ「false」

ButtonStyleのを使えば、Buttonが押している間かどうかを判断することが出来ます。

使用例

struct ContentView: View {
    var body: some View {
        VStack {
            Button(action: {
                print("Tap!")
            }){
                Text("Button")
            }
            .buttonStyle(TapButtonStyle()) 
        }
    }
}

struct TapButtonStyle : ButtonStyle {
    func makeBody(configuration: Configuration) -> some View {
        configuration.label
            .foregroundColor(.white)
            .padding()
            //押している間は赤色、通常時は青色
            .background(configuration.isPressed ? Color.red : Color.blue )
    }
}

コメント

タイトルとURLをコピーしました