【问题标题】:How do duration and UISpringTimingParameters interact in UIViewPropertyAnimator?UIViewPropertyAnimator中duration和UISpringTimingParameters如何交互?
【发布时间】:2016-08-02 21:51:44
【问题描述】:

iOS 10 有几个新的动画类。值得注意的包括UIViewPropertyAnimatorUISpringTimingParameters。属性动画师可以是created,带有持续时间和时间参数——时间参数可以是弹簧参数的一个实例。

过去,关于 iOS 中弹簧动画 API 的一个常见 complaint 是它们需要持续时间 - 真正的弹簧动画的持续时间应由阻尼比和初始速度等弹簧属性确定。 UISpringTimingParameters 可以是 created 与这些类型的参数。

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

【问题讨论】:

    标签: ios animation uiviewpropertyanimator


    【解决方案1】:

    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 不擅长真正的振荡,但很容易控制:大多数时候你肯定需要一个动画它的持续时间。核心弹簧动画API:CASpringAnimation,它有真实的弹簧行为,但它的持续时间不容易控制,它的动画持续时间最多它的四个物理参数。

    【讨论】:

      猜你喜欢
      • 2018-04-26
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多