每当两个UIImageView重叠时,我如何检测?

时间:2011-02-08 05:00:23

标签: iphone objective-c iphone-sdk-3.0 ios4

我有两个UIImageViews,其中一个是从左向右移动,另一个是触摸可拖动。我希望NSLog在控制台上显示一条消息,只要imagetwo重叠imageone。我该怎么做?

4 个答案:

答案 0 :(得分:11)

如果UIImageViews共享相同的超视图(更确切地说,具有相同的坐标空间),您可以使用CGRectIntersectsRect函数轻松测试矩形交集。

可能您需要添加如下代码:

  -(void) touchesEnded:(NSSet *) touches {
    if(CGRectIntersectsRect([imageViewA frame], [imageViewB frame])) {
      NSLog(@"Do something.");
    }
  }

到托管两个图像视图的UIView,或者在拖动完成时调用的类似方法。

答案 1 :(得分:1)

尝试这样的事情。

if (CGRectContainsRect([myImageView1 frame], [myImageView2 frame])) {
        NSLog(@"Overlaped, it's working!");
}

答案 2 :(得分:0)

您可以使用:

CGRectIsNull(CGRectIntersection(view1.bounds,view2.bounds));

答案 3 :(得分:0)

在Swift 3.0中已成为......

if (self.image2P.bounds.contains(self.image3P.bounds)) {
    print("Overlaped, it's working!")
}