どうも、ちょげ(@chogetarou)です。
Buttonがタップ中かどうかを知る方法を紹介します。
方法

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 )
}
}
コメント