iOS动画:Layer弹簧(6)

22 篇文章 0 订阅
21 篇文章 0 订阅

UIKit和Core Animation弹簧

  弹簧和摆钟类似,自然情况下,其运行轨迹都类似于一个逐渐减弱的正弦波,如图。
image_1
影响波形状的因素主要4个:
damping:阻尼系数
mass:质量
stiffness:弹性系数
initial velocity:初速度

当使用UIKit中的弹簧效果animate方法时,你只能配置其中的两个参数usingSpringWithDamping和initialSpringVelocity,为了在给定的duration内停止动画,系统会动态调整其它参数的值以达到弹簧效果,但动画表现出来的实际效果却不一定是我们想要的。
而Core Animation却能让你通过CASpringAnimation类为layer创建合适的弹簧动画,你可以设置弹簧系统的各个参数以达到预期的效果,但是这种方法的缺点就是你无法告诉弹簧系统他的持续时间应该是多少,这只能取决于你提供的属性值,由系统决定持续时间。

创建spring Animation

因为CASpringAnimation继承至CABasicAnimation,你可以仅仅将前面几章创建CABasicAnimation替换成CASpringAnimation即可。

      let jump = CASpringAnimation(keyPath: "position.y")
      jump.damping = 50.0
      jump.mass = 10.0
      jump.stiffness = 1500.0
      jump.initialVelocity = 100.0
      jump.fromValue = textField.layer.position.y + 1.0
      jump.toValue = textField.layer.position.y
      jump.duration = jump.settlingDuration
      textField.layer.add(jump, forKey: nil)

damping默认值为10.0,mass默认值为1.0,stiffness默认值为100.0,initialVelocity默认值为0.0,初速度可以为正负值,正值表示为摆钟落下方向的速度,负值表示为摆钟落下反方向的速度。
这里的duration不能设置成具体的值,因为它是由弹簧系统本身决定的,如果设置成具体的值,弹簧动画会提前结束,比如设置成0.25秒,效果如下:
image_2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值