Замедление анимации 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)