Spring Animation 可以让试图在一次动画中的运动轨迹像弹簧一样,有多次不同方向的运动,最后停止在终点。

可以用如下方法创建一个Spring Animation:

1 [UIView animateWithDuration:(NSTimeInterval) delay:(NSTimeInterval) usingSpringWithDamping:(CGFloat) initialSpringVelocity:(CGFloat) options:(UIViewAnimationOptions) animations:^{
2         <#code#>
3     } completion:^(BOOL finished) {
4         <#code#>
5     }];
6     

usingSpringWithDamping: 弹簧动画的阻尼值,也就是相等于摩擦力的大小,该属性的值在 0.0 到 1.0 之间,越靠近0,阻尼越小,弹簧的幅度越大,反之阻尼越大,弹动的幅度越小,如果大到一定程度,会出现弹不动的情况。

initialSpringVelocity: 弹簧动画的速率,或者说是动力。值越小弹簧的动力越小,弹簧拉伸的幅度越小,反之动力越大,弹簧拉伸的幅度越大。这里需要注意的是,如果设置为0,表示忽略该属性,由动画持续时间和阻尼计算动画的效果。

 

弹簧动画并不只作用于位置的变化 ,它可以作用于所有动画属性的变化,比如透明度的变化,也同样有弹簧动画的效果,只不过它没有位置变化那么明显和贴近真实,会出现一闪一闪的效果。

 

1  [UIView animateWithDuration:3 delay:1 usingSpringWithDamping:0.1 initialSpringVelocity:5 options:UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionAutoreverse animations:^{
2         [btn setAlpha:0.1f];
3     }completion:^(BOOL finished) {
4       [btn setAlpha:1.0f];
5     }];