➰
【SwiftUI】.animationでアニメーションをつける方法
はじめに
この記事の主張
-
.animation(_:value:)で値の変更を検知して、指定のアニメーションをViewに反映する - アニメーションの種類を比較
本題
.animation(_:value:)で値の変更を検知して、指定のアニメーションをViewに反映する
実際にコードからみていきましょう。
以下のコードでは、円をタップすると、円のサイズが3倍に拡大/縮小されます。
拡大時/縮小時にアニメーションが入っています。
import SwiftUI
struct AnimationView: View {
@State private var isLarge: Bool = false
var body: some View {
Button {
isLarge.toggle()
} label: {
Circle()
.frame(width: 100, height: 100)
.scaleEffect(isLarge ? 3 : 1)
.animation(.spring(), value: isLarge)
}
}
}

アニメーションを適用している箇所はここです。
.animation(.spring(), value: isLarge)
この場合、変数isLargeの変更を監視して、アニメーション.spring()を適用しています。
ボタンが押されたタイミングで、変数isLargeが変更されるため、その変更をトリガーにしてCircle()に.spring()アニメーションが反映されます。
アニメーションの種類を比較
以下、5つについてアニメーションを比較してみました。
- default
- linear
- easeInOut
- easeIn
- easeOut
| default | linear | easeInOut | easeIn | easeOut |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
ease系は立ち上がりと立ち下がりで違うのがわかるかと思います。
アニメーションをさらに深掘りしたい皆様へ
(2024/10/16(水)追記)
アニメーションの種類について図解した記事をアップしました。
アニメーションの種類やパラメータによる動きの違いを動画を交えて紹介していますので、ぜひ参考にしてみてください。
まとめ
-
.animation(_:value:)で値の変更を検知して、指定のアニメーションをViewに反映する - アニメーションの種類を比較





Discussion