6

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

过去对 iOS 中弹簧动画 API 的一个常见抱怨是它们需要一个持续时间 - 真正的弹簧动画的持续时间应该由阻尼比和初始速度等弹簧属性确定。UISpringTimingParameters可以使用这些类型的参数创建。

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

4

1 回答 1

8

UIViewPropertyAnimator就像 UIView 动画的面向对象版本。注意: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 不擅长真正的振荡,但它很容易控制:大多数时候你需要一个动画你确定它的持续时间。核心Spring动画API:CASpringAnimation,它具有真实的弹簧行为,但它的持续时间不容易控制,它的动画持续时间最多它的四个物理参数。

于 2016-08-03T15:58:38.870 回答