我们先来看以下两个动画的效果
上面的位移动画,一个是普通的动画,一个是spring动画,可以明显的看出来,spring动画在动画的前期更快一些,给人的感觉干脆,利落
以下是代码
- (void)normalAnimation
{
[UIView animateWithDuration:1 animations:^{
self.animationView.frame = CGRectMake(10, 400, 50, 50);
} completion:^(BOOL finished) {
self.animationView.frame = CGRectMake(10, 100, 50, 50);
}];
}
- (void)springAnimation
{
[UIView animateWithDuration:1 delay:0 usingSpringWithDamping:1 initialSpringVelocity:0 options:UIViewAnimationOptionCurveLinear animations:^{
self.animationView.frame = CGRectMake(10, 400, 50, 50);
} completion:^(BOOL finished) {
self.animationView.frame = CGRectMake(10, 100, 50, 50);
}];
}
spring 动画的接口就是
[UIView animateWithDuration:1
delay:0
usingSpringWithDamping:1
initialSpringVelocity:0
options:UIViewAnimationOptionCurveLinear
animations:^{
}];
app 中很多都是用的这个动画效果,让人看起来很舒服
Spring Animation 前期速度增加得更快,在动画时间一定的前提下,给人感觉更加快速、干净。
我们可以通过这个图看下
此外,Spring Animation 不只能对位置使用,它适用于所有可被添加动画效果的属性