【问题标题】:Check if view within other view?检查是否在其他视图中查看?
【发布时间】:2015-02-05 13:09:10
【问题描述】:

我正在使用 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
    }
}

【问题讨论】:

    标签: ios swift uiimageview uipangesturerecognizer


    【解决方案1】:

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

    更新:刚刚发现Swift中CGRect上也有intersects方法

    let doRectsIntersect = rect1.intersects(rect2) 
    

    【讨论】:

    • 这个功能真的很好,但它只适用于矩形。是否有任何方法可以对矢量图像进行相同的检查?
    • 嗯,不确定是否检测到矢量图像的交集。
    【解决方案2】:

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

    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")
        }
      }
    
    }
    

    【讨论】:

      【解决方案3】:

      查看UIImageView的位置

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

      移动完成后输入此代码

      【讨论】:

      • 这并没有说明image 视图距离view 的右下角很远。
      猜你喜欢
      • 2020-01-18
      • 2011-11-17
      • 2023-04-01
      • 2016-08-23
      • 2014-06-08
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多