iOS动画CASpringAnimation

向和歌
2023-12-01

CASpringAnimation弹簧动画

一个将类似弹簧的力应用于层属性的动画。

你通常会使用一个弹簧动画来调整图层的位置,这样它看起来就像是被弹簧拉向一个目标。层离目标越远,朝向目标的加速度越大。CASpringAnimation允许控制基于物理的属性,如弹簧的阻尼和刚度。你可以使用一个CASpringAnimation来动画层的属性,而不是它的位置。清单1展示了如何创建一个spring动画,通过将层的缩放范围从0调整到1,使其弹跳到视图中1. 因为spring动画可能会超过它的toValue,所以动画层可能会超过它的帧。

let springAnimation = CASpringAnimation(keyPath: "transform.scale")
springAnimation.fromValue = 0
springAnimation.toValue = 1
springAnimation.duration = 2

配置物理属性

damping

定义了弹簧的运动应该如何受到摩擦力的抑制。

阻尼特性的默认值为10。减少这个值可以减少每次振荡的能量损失:动画值会超过toValue,而settlingDuration可能会大于持续时间。增加这个值会增加每个持续时间的能量损失:振荡会更少更小,沉降持续时间可能比持续时间更小。

initialVelocity

物体附着在弹簧上的初速度。

默认为0,表示一个不移动的对象。负值表示物体离开弹簧附着点,正值表示物体向弹簧附着点移动。

mass

附着在弹簧末端的物体的质量。

默认质量是1。增加这个值将增加弹簧效应:附加的对象将受到更多的振荡和更大的超调,导致增加沉降持续时间。减少质量将减少弹簧效应:将有更少的振荡和更少的超调,从而减少沉降持续时间。

settlingDuration

弹簧系统静止时所需的估计持续时间。

持续时间是为当前动画参数计算的,可能与持续时间不一样。

let spring = CASpringAnimation()
spring.keyPath = "position.x"
spring.fromValue = 0
spring.toValue = 300
spring.damping = 5
spring.duration = 2

在阻尼系数为5的情况下,沉降持续时间大约为2.85秒:动画层在沉降前围绕目标位置反弹几次。然而,将阻尼属性更改为15将使沉降持续时间减少到1秒多一点:当它到达目标位置时,动画层很快停止。弹簧动画的所有物理属性:阻尼、初始速度、质量和刚度,都会影响沉降持续时间。

stiffness

弹簧刚度系数。

默认刚度系数为100。增加刚度可以减少振荡次数并减少沉降时间。减小刚度会增加振动次数,并会增加沉降时间。

 类似资料: