我有这样一个简单的观点:
struct ContentView: View {
@State private var scale:Double = 1
var body: some View {
Rectangle()
.fill(.red)
.frame(width: 200, height: 200)
.scaleEffect(scale)
.animation(Animation.easeInOut(duration: 1).repeatCount(4, autoreverses: true).delay(1), value: scale)
.onAppear {
scale = 1.2
}
}
}
字符串
它产生了这个动画:
的数据
您会注意到,在动画结束时,它捕捉到比例1.2,因为这是状态比例效果的值。
我想在出现时触发缩放动画,并使其从状态1到1.2“脉冲”4次,然后返回4次。现在它确实从缩放1开始,脉冲,但在结束时它会捕捉到1.2。我如何修复此问题,以便它创建一个从1开始,缩放到1.2并返回4次的“脉冲”动画?
1条答案
按热度按时间mwkjh3gx1#
供将来参考,在iOS 17中,
withAnimation()
函数现在包括一个完成回调,当动画完成时执行。在前面的场景中,当动画完成时,你应该将视图返回到它的初始状态。因为你想要四次重复,所以你需要从完成回调中减去一次重复,因为它将在动画完成一次后被调用。下面是修改后的代码:
字符串
结果:
的数据