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

Posted

技术标签:

【中文标题】检查是不是在其他视图中查看?【英文标题】: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
    

【问题讨论】:

【参考方案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 的右下角很远。

以上是关于检查是不是在其他视图中查看?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查用户之前是不是在 iOS 中查看过推送通知权限警报视图?

检查元素是不是在视图中,如果是则添加类

无法检查我的数组内部的文本视图在 Kotlin 中是不是可见

检查 DateTime 类型的值是不是在视图中为空,如果为空则显示空白

检查 UIImage 是不是在视图顶部

sys用户界面无法查看其他用户视图