2017-08-08 13 views
0

私はUIViewを他のすべての上に置いています。このUIViewにはUIPanGestureRecognizerがあり、画面上にドラッグすることができます。ユーザーがパンニングを停止した場合、ビューは計算された位置に移動します。これは左の画面境界または右の境界です。これはかなりうまくいきましたが、画面全体でViewが移動した速度を検討したいと思います。ユーザーがFingerを画面から離したとき、UIViewをすぐに停止してエンドポイントに移動するのではなく、カーブで行うべきです。Xamarin iOS - UIViewアニメーションとベロシティ

編集1

自分自身を間違って表現したと思います。私は、ビューがユーザーがドラッグした方向を移動する必要がありますが、カーブを作成して目的の位置に移動する必要があることを意味しました。それを重力のように考える。ユーザーは、画面の左下隅から画面の中央まで速度でビューをドラッグし、すぐに指を持ち上げます。その後、ビューは停止してはならず、そうでなければ最後の方向に移動し、ゆっくりと望む位置に移動する必要があります。この場合は右下に移動します。あなたは私たちがすでに速度を持っているが、私はここから継続する方法がわからない見ることができるように

private void DidPan() 
{ 
    CGPoint translation = PanGesture.TranslationInView(this.Superview); 
    CGPoint velocity = PanGesture.VelocityInView(this.Superview); 

    if (PanGesture.State == UIGestureRecognizerState.Changed) 
    { 
     this.Center = new CGPoint(lastLocation.X + translation.X, lastLocation.Y + translation.Y); 
    } 
    else if (PanGesture.State == UIGestureRecognizerState.Ended) 
    { 
     // Calculates the new position the view will be moving to 
     var newLocation = new CGPoint(SetX(Superview.Bounds), SetY(Superview.Bounds)); 

     // Animate it to the desired location 
     UIView.Animate(0.3,() => 
     { 
      this.Center = newLocation; 
     }, null); 
    } 
} 

これは私が既に持っているコードです。うまくいけば、誰かがここから適切な出発点を持っていると私を助けることができます。

ありがとうございます!

答えて

関連する問題