0

UIPanGestureRecognizerで 'blockView'をパンしようとしています。 UIScrollViewが慣性でスクロールを終了するのと同様に、パンが「終了」されているときは、「ブロックビュー」を慣性で減速させます。UIDynamicBehaviorを使用してUIViewパンに慣性を追加する

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) 
    } 
} 

問題: 私は、ビューをパンとして、 'blockViewは' パンがから発信された原点にスナップしようとします。パン 'エンド'は、慣性を生成しますが、パンの起点から開始します(パンの起点にスナップした後)。

注: 上記のコードはPAN THE VIEWには問題なく動作します。

答えて

0

スナップ動作を追加してスナップを修正して問題を解決しました。

関連する問題