ios - Xamarin iOS - 具有速度的 UIView 动画

标签 ios animation uiview xamarin.ios uipangesturerecognizer

我有一个 UIView 位于所有其他 View 之上。这个 UIView 有一个 UIPanGestureRecognizer 可以将它拖到屏幕上。如果用户停止平移, View 将移动到计算出的位置,即左屏幕边界或右屏幕边界。这工作得很好,但现在我想考虑 View 在屏幕上移动的速度,当用户将他的手指从屏幕上移开时,UIView 不应该立即停止移动到端点,而是应该用曲线来完成。

编辑 1

我想我表达错误了。我的意思是 View 应该移动用户拖动它的方向,但然后它应该形成一条曲线并移动到所需的位置。把它想象成重力。用户将View从左下角快速拖动到屏幕中间,然后立即抬起手指。然后 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);
    }
}

正如你所看到的,我们已经有了速度,但我不知道如何从这里继续。希望有人从这里有正确的起点并可以帮助我。

非常感谢!

最佳答案

我认为UIKit Dynamics可以满足您的要求。

引用这个博客:https://blog.xamarin.com/drag-drop-and-snap-with-uikit-dynamics/

关于ios - Xamarin iOS - 具有速度的 UIView 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45562268/

相关文章:

c++ - IOS 版本包含 IDA 中可见的符号

ios - 如何将数组中的数据从一个vc传递到另一个vc?

android - 如何在android中一个接一个地动画图像

android - 从右向左滑动过渡动画。 fragment -> Activity

ios - 无法在 iPad Air 2 上锁定方向

javascript - 如何以与 vivus.js 类似的风格制作 SVG 填充和路径动画

iPhone:应用比例变换后保持文本看起来不错?

ios - 底部空间到: UIView Constraint

ios - TapGesture 添加到 UIView+SomeCategory。我如何使用这个添加到我的 UIViewController 的 UIView?

ios - 第一次后获取重复的表格 View 单元格