Ich versuche, 'BlockView' mit UIPanGestureRecognizer zu schwenken. Wenn die Schwenkung auf "Beendet" eingestellt ist, soll der "BlockView" mit Trägheit abgebremst werden, genau wie ein UIScrollView mit Trägheitsscroll enden würde.Hinzufügen von Trägheit zu einem UIView Pan mit UIDynamicBehavior
override func viewDidLoad() {
super.viewDidLoad()
self.dynamicAnimator = UIDynamicAnimator(referenceView: self.view)
let collider = UICollisionBehavior(items: [self.magnifiedView!])
collider.collisionDelegate = self
collider.collisionMode = .Boundaries
collider.translatesReferenceBoundsIntoBoundary = true
self.dynamicAnimator.addBehavior(collider)
self.dynamicProperties = UIDynamicItemBehavior(items: [self.magnifiedView!])
//self.dynamicProperties.elasticity = 1.0
//self.dynamicProperties.friction = 0.0
self.dynamicProperties.allowsRotation = false
//self.dynamicProperties.resistance = 10.0
self.dynamicAnimator.addBehavior(self.dynamicProperties)
}
func panBlockView (panGesture: UIPanGestureRecognizer) {
switch panGesture {
case .Began:
self.blockViewLocation = (self.blockView.center)!
case .Changed:
let translation = panGesture.translationInView(self.view)
self.blockView.center = CGPointMake(self.blockViewLocation.x + translation.x, self.self.blockViewLocation.y + translation.y)
case .Ended, .Cancelled:
self.dynamicAnimator.addLinearVelocity(panGesture.velocityInView(self.view), forItem: self.blockView)
}
}
Ausgabe: Als ich die Ansicht schwenken, 'blockView' versucht, den Ursprung zu schnappen, wo die Pfanne von entstanden war. Wenn die Pfanne "endet", erzeugt sie Trägheit, aber sie beginnt am Ursprung der Pfanne (nach dem Einrasten in den Ursprung der Pfanne).
HINWEIS: Der obige Code funktioniert ohne Probleme nur PAN THE VIEW.