持续时间和UISpringTimingParameters如何在UIViewPropertyAnimator中交互?

Tom*_*ing 4 animation ios uiviewpropertyanimator

iOS 10有几个新的动画类.值得注意的包括UIViewPropertyAnimatorUISpringTimingParameters.可以使用持续时间和定时参数创建属性动画制作者- 定时参数可以是弹簧参数的实例.

过去关于iOS中弹簧动画API的一个常见抱怨是它们需要持续时间 - 真实弹簧动画的持续时间应该由弹簧属性决定,如阻尼比和初始速度.UISpringTimingParameters可以使用这些参数创建.

我的问题:UIViewPropertyAnimator当它的时间曲线是弹簧时,仍然使用你给它的持续时间吗?或者它会丢弃持续时间并使用弹簧参数来计算它?对于Apple来说,这将是一个奇怪的API决定,但是如此接近为设计师提供他们想要的东西(真正的弹簧)并且还没有完全到达那里(强制指定持续时间)似乎也很奇怪.

see*_*nte 8

UIViewPropertyAnimator就像UIView Animation的面向对象版本.注意:UISpringTimingParameters包括两种init方法:init(dampingRatio: CGFloat, initialVelocity: CGVector)如UIView Spring Animation API,它是spring动画的简化版本; init(mass: CGFloat, stiffness: CGFloat, damping: CGFloat, initialVelocity: CGVector)像Core Spring Animation API这是完整的弹簧动画.

:弹簧时间为init(dampingRatio: CGFloat, initialVelocity: CGVector),UIViewPropertyAnimator实例的动画持续时间为您设定的持续时间; 使用弹簧时间init(mass: CGFloat, stiffness: CGFloat, damping: CGFloat, initialVelocity: CGVector),UIViewPropertyAnimator实例的动画持续时间将是这个春天时间计算的一​​个.验证它很容易.您可以使用我的演示:ControlPanelAnimation.

UIView Spring Animation API是Core Spring Animation API的简化版本,就像你引用的文章所说,UIView Spring Animation API并不擅长真正的振荡,但它很容易控制:大多数时候你需要一个动画你确定它的持续时间.Core Spring Animation API:CASpringAnimation,它具有真正的弹簧行为,但控制其持续时间并不容易,其动画持续时间高达其四个物理参数.