0

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

enter image description here

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.

Antwort

0

Ein Snap-Verhalten hinzufügen und das Problem beheben lassen.