SwiftUI 中的动画有两种类型:显式动画和隐式动画。
一、显式动画
显式动画通过 withAnimation
触发,我们可以将改变 app
状态的操作放在 withAnimation
的闭包中,这时由状态变化所触发的 View 变化将以动画形式呈现。
.onTapGesture {
withAnimation {
self.expanded.toggle()
}
}
上述动画将以默认的动画 (Animation.default,实质上是一个 easeInOut 动画) 呈现。除了最简单的 .default 动画,我们也可以选择其他动画方式,并为它设置持续时间,动画延迟,是否重复等。
.onTapGesture {
let animation = Animation .linear(duration: 0.5)
.delay(0.2)
.repeatForever(autoreverses: true)
withAnimation(animation) {
self.expanded.toggle()
}
}
二、隐式动画
直接添加一个 animation 修饰符
.animation(.easeInOut)