UIPanGestureRecognizer全局转换坐标

时间:2018-04-20 07:57:42

标签: swift uigesturerecognizer uipangesturerecognizer

我正在使用UIPanGestureRecognizer将图片拖出UICollectionViewCell,然后查看它是否与屏幕上其他位置的其他图片发生碰撞。 要做,我需要能够匹配他们的翻译坐标。我的理解是,由于图像在collectionView单元格内,因此跟踪相对单元格坐标,我需要全局跟踪。

|---------------------------------------|
|        _______                        |
|       |_image_|                       |
|                                       |
|---------------------------------------|
|       |image|     Collection View     |
|---------------------------------------|

到目前为止,当我将图像拖到另一个图像上时,我将其作为日志:

moved imageView center: (-44.0, -143.5)
destination imageView center: (440.0, 175.0)

let translation = panGesture.translation(in: self.view.superview)
self.view.center = CGPoint(x: self.initialLocation.x + translation.x, y: self.initialLocation.y + translation.y)

我也尝试用self.view.superview替换mainView,但无济于事:

let window = UIWindow(frame: UIScreen.main.bounds)
let mainView = window.rootViewController?.view

我做错了什么?如何在全球范围内跟踪拖动的图像?

1 个答案:

答案 0 :(得分:0)

为实现这一目标,您必须遵循程序。

  1. 首先,当panGesture调用时,您必须创建view/imageview self.view(所以有)。

  2. 将snapsnot添加为view/imageview的子视图(VC主视图)

  3. 要获得w.r.t主视图的视图位置,您必须使用snapshot。现在根据此设置快照框架。

  4. 您可以在此之后隐藏view/Imgview,以便在用户互动中看起来像用户移动相同的panGesture

  5. 现在匹配你的形象,做你想做的事。

  6. 如果您想将该图片放在原始空间,请在用户从public class LocalizedAttribute<T> { T value; Locale locale; } 结束时取消隐藏该图片。

  7. 希望你现在能够更清楚地了解你必须做的事情。