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 }];