【发布时间】: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坐标的绝对变化。
标签: ios uipangesturerecognizer