UIPanGestureRecognizer 的翻译(in:) 函数的视角参数是啥?

Posted

技术标签:

【中文标题】UIPanGestureRecognizer 的翻译(in:) 函数的视角参数是啥?【英文标题】:What's the point of view parameter of translation(in:) func of UIPanGestureRecognizer?UIPanGestureRecognizer 的翻译(in:) 函数的视角参数是什么? 【发布时间】:2019-06-17 21:23:34 【问题描述】:

迟到总比没有好。

UIPanGestureRecognizer 有一个带有视图参数的translation(in:) func。有人知道为什么它在那里参数吗?

我尝试了这个参数的不同值——nil、window、superview、view,但是 func 总是返回相同的值。有什么不同的情况吗?

关于苹果文档视图参数是应该在其坐标系中计算平移手势的平移的视图。那么,它是什么意思?

以防万一它工作正常。通常我使用视图作为具有平移手势的参数,但我想知道:)

UPD:与UIPanGestureRecognizer的velocity(in:)参数相同。

【问题讨论】:

通常您希望在手势附加到的视图中进行翻译..有时该视图的边界可能超出窗口的边界..有时可能有一个小于平移的子视图手势视图..与原始大视图相比,较小子视图中的翻译将按比例缩小。如果两个视图没有相同的边界和东西,它可能会返回不同的值,因为它将向量从一个视图转换到另一个视图。可能来自:[convertRect:toView:][convertPoint:toView:] @Brandon 这正是我最初理解它的方式。但是,如果您尝试将来自不同层次结构的视图作为 func translation(in:) 参数,它将返回相同的值。稍后我想尝试不同的uiwindow和uiscreen可能是一个点。 @Brandon,感谢您使用 vector 这个词。当文档说translation 是“标识视图新位置的点”。例如,如果某物位于(1, 1) 并移动到(2,2),则它的新位置不是(1+2,1+2) = (3,3)——而是(2,2)。但是如果平移是一个向量,那么平移就代表了手势的x坐标和y坐标的绝对变化。 【参考方案1】:

您没有看到任何差异的原因是一个点是您检查过的所有视图的一个点。

但是现在向您的界面添加一个其transform 是 CGAffineTransform 比例变换的视图,并使用 that 来检查 translation(in:) 的值。你会看到不同的!

因此,您可以了解为什么指定视图可能很重要。整个事情可能发生在一个应用了比例变换的世界(或世界的一部分)中,在这种情况下,您需要以适当的点比例得到答案。

【讨论】:

以上是关于UIPanGestureRecognizer 的翻译(in:) 函数的视角参数是啥?的主要内容,如果未能解决你的问题,请参考以下文章

easyui的datagrid的翻页控件的事件,有没有啥对应的翻页函数,或者翻页控件绑定的函数

在 UIButtons 上禁用 UIPanGestureRecognizer

UIPanGestureRecognizer 碰撞

如何在父视图中限制 UIPanGestureRecognizer

UIPanGestureRecognizer 干扰滚动

未调用 iOS 13 UIPanGestureRecognizer 选择器