2014-09-28 65 views
0

我想放慢由我的UIDynamicAnimator生成的动画效果,这样我就可以微调我的UIDynamicBehaviors。放慢UIDynamicAnimator的动画效果

在ios模拟器中,在调试菜单下有一个菜单选项,标记为“在最前面的应用程序中切换慢速动画”。

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

+0

难道你不能只用更长的持续时间用于执行动画的动画块(你使用animateWithDuration:....方法之一)吗? – rdelmar 2014-09-28 17:06:10

+0

不,我没有直接使用动画,因为UIDynamicAnimator为我做了。 – benvolioT 2014-10-28 14:03:15

回答

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)