UIPanGestureRecognizer translationInView 与 locationInView

UIPanGestureRecognizer translationInView vs locationInView

我正在迈出 Swift

的第一步

为 UIPanGestureRecognizer 沿 X 坐标移动 UIView 的最佳方法是什么?

通常程序员使用 translationInView 进行平移手势

但我想 locationInView 更方便用于此目的

平移手势由屏幕上的单个触摸组成,locationInView 为您提供触摸在屏幕上的当前位置,translationInView 为您提供相对于之前触摸的移动。

平移时,您通常对运动更感兴趣(例如,滚动时,您不想知道滚动从哪里开始和结束)而不是当前位置。例如,如果您使用平移识别器进行拖放,那么最终位置会让您感兴趣(您想知道放在哪里)。

translationInView 提供视图在其所在视图内移动的坐标变化。以 CGPoint 的形式给出。

如果你把它拖到左边,它可能会提供坐标:

(-20.0, 0)

locationInView 以 CGPoint 的形式提供视图的位置。

如果将其向左拖动并在整个手势过程中打印 locationInView,您将看到一连串的日志,其坐标不断变化,最后一个是其当前所在的位置。

要使用触摸位置移动 UIView,您需要在手势的委托方法中将 UIView 的框架 属性 设置为手势的 locationInView。