//纵向平滑移动
CASpringAnimation * spring = [CASpringAnimation animationWithKeyPath:@"position.y"];
spring.damping = 5;//阻尼系数0~10
spring.stiffness = 100;//弹簧刚度系数 0 到 100 系数越大力就越大
spring.mass = 1;//弹簧末端的质量 大于0质量越大弹性就越大
spring.initialVelocity = 0;//速度
spring.fromValue = @(self.annotationView.layer.position.y);//起始的位置
spring.toValue = @(self.annotationView.layer.position.y + 10);//结束位置
spring.duration = spring.settlingDuration;//结束时间
[self.annotationView.layer addAnimation:spring forKey:spring.keyPath];
//self.annotationView这里是地图上的标注,具体根据要求更改
//position.y + 10为滑动的纵坐标终点。同理,横向移动为position.x。
mass:
质量,影响图层运动时的弹簧惯性,质量越大,弹簧拉伸和压缩的幅度越大。如果把质量改成10,则动画的速度变慢,并且波动幅度变大。
stiffness:
刚度系数(劲度系数/弹性系数),刚度系数越大,形变产生的力就越大,运动越快
damping:
阻尼系数,阻止弹簧伸缩的系数,阻尼系数越大,停止越快
initialVelocity:
初始速率,动画视图的初始速度大小
速率为正数时,速度方向与运动方向一致,速率为负数时,速度方向与运动方向相反
如果把速率改成-20,则会看到 label 先往左边移动一小段距离,然后再开始往右移动,因为初始速度往左,所以会经历先减速,后加速的过程
settlingDuration:
结算时间 返回弹簧动画到停止时的估算时间,根据当前的动画参数估算
通常弹簧动画的时间使用结算时间比较准确
参考内容:CASpringAnimation 和 UIView.animateWithDuration 分别实现弹性动画 以及 iOS9 CASpringAnimation 弹簧动画详解