减慢 UIDynamicAnimator 的动画

Posted

技术标签:

【中文标题】减慢 UIDynamicAnimator 的动画【英文标题】:slowing down animation of UIDynamicAnimator 【发布时间】:2014-09-28 16:48:48 【问题描述】:

我想减慢我的 UIDynamicAnimator 生成的动画,以便我可以微调我的 UIDynamicBehaviors。

ios 模拟器中,Debug 菜单下有一个菜单选项,标签为“Toggle slow animations in frontmost app”。

但是,这个选项似乎对 UIDynamicAnimator 生成的动画没有影响。还有其他方法可以实现我的目标吗?

【问题讨论】:

你不能对用于执行动画的动画块使用更长的持续时间吗(你是否使用 animateWithDuration:.... 方法之一)? 不,我没有直接使用动画,因为 UIDynamicAnimator 为我做的。 【参考方案1】:

您可以更改您在动画中指定的力以降低移动速度。例如,您可以更改重力大小以减慢加速度:

    self.animator = UIDynamicAnimator(referenceView: self.view)
    var gravity = UIGravityBehavior(items: [animatedView])
    gravity.magnitude = 0.5

如果发生碰撞,您还可能会增加摩擦力和/或弹性以减慢速度,但在某些情况下这可能会影响轨迹:

    let bounceProperties = UIDynamicItemBehavior(items: [animatedView])
    bounceProperties.elasticity = 0.5
    bounceProperties.friction = 0.2

    var collision = UICollisionBehavior(items: [animatedView])
    var boundaryId: NSMutableString = NSMutableString(string: "bottomBoundary")
    let boundaryPath = UIBezierPath(rect: boundaryFrame)
    collision.addBoundaryWithIdentifier(boundaryId, forPath: boundaryPath)

    // Start animating
    animator.addBehavior(gravity)
    animator.addBehavior(collision)
    animator.addBehavior(bounceProperties)

【讨论】:

以上是关于减慢 UIDynamicAnimator 的动画的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIDynamicAnimator 水平动画 UIView

使用 UIDynamicAnimator 后图像模糊

减慢动画中的 UIView 动画

IOS7笔记-8协议block动画

减慢 CAGradientLayer 动画

无法在 ios 中减慢动画速度