Замедление анимации UIDynamicAnimator

Я хочу замедлить анимацию, сгенерированную моим UIDynamicAnimator, чтобы я мог точно настроить UIDynamicBehaviors.

В симуляторе ios в меню "Отладка" есть пункт меню "Помечать медленные анимации в самом переднем приложении".

Однако эта опция, похоже, не влияет на анимацию, создаваемую 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)
Другие вопросы по тегам