withAnimationとは?

withAnimationとは、状態変数(@Stateや@Bindingなど)の変更が影響するビューに、アニメーションを付ける方法です。
func withAnimation <Result> ( _ animation : Animation? , _ body : ( ) throws -> Result) rethrows -> Result
animation:アニメーションの種類
body:ビューに影響する状態変数の変化を定義するクロージャー
animation引数では、Animation構造体でアニメーションの種類を指定します。
そして、bodyでは、状態変数を変化させるクロージャーを定義します。
@State var showText = false
var body: some View {
VStack {
Button(action: {
withAnimation(.linear(duration: 1)) {
//状態変数の変更
showText.toggle()
}
}) {
Text("アニメーション")
}
if showText {
Text("Hello")
}
}
}
withAnimationで、linearアニメーションを指定し、クロージャー内でビューの表示・非表示を切り替える状態変数を変更しています。
状態変数の変化で影響を受けるTextビューにアニメーションが追加されることとなります。
まとめ
withAnimationは、状態変数の変化とアニメーションを結びつける関数です。
ビューに影響を与える状態変数の変化を、withAnimationのクロージャー内ですることによってアニメーションを追加することが出来ます。
コメント