检查是否在其他视图中查看?

Check if view within other view?

我正在使用 UIPanGestureRecognizer 来移动 UIImageView。现在我需要检查用户是否在其他矢量 PDF UIImageView 中移动了我的对象。

例如,我们有正在移动的红色条,我们需要在蓝色条内移动红色条(蓝色条是矢量 PDF)。我们如何检查?

示例图片:http://i.imgur.com/PKXKHBi.png

示例代码:

@IBAction func moveRedBox(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)

    if recognizer.state == UIGestureRecognizerState.Ended {
        // Here we will check that redBox inside blueBox
    }
}

检查 UIImageView 的位置

image.frame.origin.x >= view.frame.origin.x
image.frame.origin.y >= view.frame.origin.y

移动完成后输入此代码

要检查两个视图是否重叠,您可以使用 CGRectIntersectsRect 函数。

更新:刚发现Swift

中CGRect也有intersects方法
let doRectsIntersect = rect1.intersects(rect2) 

看看这个。这对我有帮助:

if view1.frame.contains(view2.center) {
    // do your thing
  }

完整示例:

@IBAction func moveRedBox(recognizer: UIPanGestureRecognizer) {

  ...

  switch recognizer.state {

  case .Ended:

    if blueBox.frame.contains(recognizer.view!.center) {
      print("Yep")
    }
  }

}