使用多个对象的手势识别器移动对象

时间:2018-01-20 18:43:36

标签: ios swift cocoa-touch

我正在尝试创建一个应用程序,您可以在Snapchat和Instagram上使用贴纸。它完全可以找到一种技术,可以添加图像,但是现在我希望如果你在对象周围滑动对象改变它的位置(我也想制作缩放/旋转功能)。

我的代码如下所示:

@objc func StickerLaden() {
   for i in 0 ..< alleSticker.count {
        let imageView = UIImageView(image: alleSticker[i])

        imageView.frame = CGRect(x: StickerXScale[i], y:StickerYScale[i], width: StickerScale[i], height: StickerScale[i])

        ImageViewsSticker.append(imageView)
        ImageView.addSubview(imageView)
        imageView.isUserInteractionEnabled = true

        let aSelector : Selector = "SlideFunc"
        let slideGesture = UISwipeGestureRecognizer(target: self, action: aSelector)

        imageView.addGestureRecognizer(slideGesture)
    }
}

func SlideFunc(fromPoint:CGPoint, toPoint: CGPoint) {
}

1 个答案:

答案 0 :(得分:1)

以下是您需要采取的高级步骤:

  • 将一个UIPanGestureRecognizer添加到包含图像的父视图中。
  • 实施UIGestureRecognizerDelegate方法以跟踪用户触摸和释放屏幕。
  • 首次触摸时,循环浏览所有图片并致电image.frame.contains(touchPoint)。将触摸点下的所有图像添加到阵列中。
  • 遍历触摸图像列表并计算触摸点到图像中心的距离。选择中心最接近触摸点的图像。
  • 将所选图像移动到视图堆栈的顶部。 [您现在已经选择了一个图像并使其可见。]
  • 接下来,当您收到平移事件时,请相应地更改所选图像的帧。
  • 用户释放屏幕后,重置您可能拥有的任何状态变量,以便在下次触摸完成后重新开始。

以上将为您提供一个很好的 pan 解决方案。这是你需要解决的大量事情,但这并不是很困难。

正如我在评论中所说,比例旋转非常棘手。我建议你先忘记一下,然后再实现你应用的其他部分。