私は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);
}
}
:
これは私が既に持っているコードです。うまくいけば、誰かがここから適切な出発点を持っていると私を助けることができます。
ありがとうございます!
これは正しい方向に私を指摘、ありがとう:) –