Xamarin iOS — анимация UIView со скоростью

У меня есть UIView, лежащий прямо над всеми остальными. Этот UIView имеет UIPanGestureRecognizer для перетаскивания по экрану. Если пользователь прекратил панорамирование, представление перемещается в расчетную позицию, которая является левой или правой границей экрана. Это работает довольно хорошо, но теперь я хочу учитывать скорость, с которой представление перемещается по экрану, и когда пользователь убирает палец с экрана, UIView не должен немедленно останавливаться, чтобы перейти к конечной точке, вместо этого он должен делать это с помощью кривой.

Изменить 1

Думаю, я неправильно выразился. Я имел в виду, что вид должен двигаться в том направлении, в котором его перетащил пользователь, но затем он должен сделать кривую и переместиться в желаемое положение. Думайте об этом как о гравитации. Пользователь будет быстро перетаскивать вид из левого нижнего угла в середину экрана и сразу же поднимать палец. Затем View не должен останавливаться, иначе он должен двигаться в последнем направлении и медленно перемещаться в желаемое место, которое в данном случае является правым нижним углом.

Это код, который у меня уже есть:

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

Как видите, у нас уже есть скорость, но я не знаю, как продолжить дальше. Надеюсь, у кого-то есть правильная отправная точка отсюда и может помочь мне.

Большое спасибо!


person Daniel DirtyNative Martin    schedule 08.08.2017    source источник


Ответы (1)


Я думаю, что UIKit Dynamics может удовлетворить ваши требования.

обратитесь к этому блогу: https://blog.xamarin.com/drag-drop-and-snap-with-uikit-dynamics/

person ColeX - MSFT    schedule 08.08.2017