如何通过 Swift 移动其中一个对象来相对移动多个对象?

How to relatively move number of objects by moving one of them with Swift?

我有一个问题。

我有 4 个图像视图对象是我的故事板。那些代表 "corners"。我想有这个选项,当你移动一个角时,其他三个相对移动。

喜欢animated gif here

我现在所做的是将 Pan Gesture Recognizer 应用于故事板中的图像视图。然后我将代码添加到 ViewController:

 @IBAction func handlePan(recognizer:UIPanGestureRecognizer) {

    let translation = recognizer.translationInView(self.view)
    recognizer.view!.center = CGPoint(x:recognizer.view!.center.x + translation.x,
        y:recognizer.view!.center.y + translation.y)
    recognizer.setTranslation(CGPointZero, inView: self.view)

}

但我不确定下一步该做什么。我需要识别哪个角被点击和移动,所以我可以为其他角应用特殊关系移动功能。

嘿嘿,

一种技术是找到表示平移手势的向量,然后使用该向量来更新图像视图的其余部分。例如,UIPanGestureRecognizers 扩展自 UIGestureRecognizer,它具有以下方法:

func locationOfTouch(_ touchIndex: Int, inView view: UIView?) -> CGPoint

伪代码有点像这样:

  1. 获取 1 个 imageView 的最后已知位置作为 CGPoint
  2. 检测平移手势
  3. 检索触摸的位置,作为 CGPoint

现在你有两个CGPoints,1个代表起始位置,1个代表结束位置,你可以将这两个点相减形成一个有长度和方向的向量。使用此信息,您可以想出一个替换其他 3 个 imageView 的公式。