実装したいこと
AppStoreのTodayタブのカードのように、押したら少し小さくなり、はなすと元に戻るようなやつ。
どうやったか
DrugGesture
とか使ってやろうと思ったけど、ScroolView
と合わせて使うとスクロールしなくなる問題があった。
ButtonStyle
を使えば、簡単にできた。
.scaleEffect(configuration.isPressed ? 0.95 : 1.0)
がみそ。
struct SprintButtonStyle: ButtonStyle {
func makeBody(configuration: Self.Configuration) -> some View {
configuration.label
.scaleEffect(configuration.isPressed ? 0.95 : 1.0)
.animation(.default)
}
}
struct TodayCardView: View {
var body: some View {
Button(action: {
print("Button action")
}) {
Text("テキスト")
.font(.title)
.padding()
.frame(width: 250, height: 300)
.background(Color.green)
}
.buttonStyle(SprintButtonStyle()
)
}
}