如何检查两个图像视图是否在同一位置?

时间:2012-03-05 05:23:14

标签: iphone objective-c xcode

我正在一个可以拖动图像的项目中工作。其中,如果我将一个图像放在另一个图像上,则必须更改图像。  我需要的是 1)我想检查两个图像是否在同一个地方。 2)图像的位置必须不准确。它可能大致相等

4 个答案:

答案 0 :(得分:8)

如果你想检查两个UIImages是否相交,这是一个好方法:

CGRect rect1 = myView1.frame;
CGrect rect2 = myView2.frame;

if (CGRectIsNull(CGRectIntersection(rect1, rect2))) {
    //They collide
}

您可以在此处获得有关此内容的所有信息:

https://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CGGeometry/Reference/reference.html

答案 1 :(得分:4)

//for checking whether one image is inside another image
if(CGRectContainsRect(ImageView1.frame, ImageView2.frame))
{
    //your code for overlapping here
}

//for checking whether one image intersects another
if(CGRectIntersectsRect(ImageView1.frame,ImageView2.frame))
{
    //your code for intersection here        
}

答案 2 :(得分:2)

这是一种假设图像大小相同的方法

// using ints because it is easier for taking the abs value
int dx,dy;

dx = frame1.origin.x - frame2.origin.x;
dy = frame1.origin.y - frame2.origin.y;
dx = abs(dx);
dy = abs(dy);

// overlapping width and height
int ovHeight, ovWidth;

ovWidth = frame1.size.width-dx;
ovHeight = frame1.size.height-dy;

int ovArea = ovWidth*ovHeight;
int imageArea = frame1.width*frame1.height;

int percentOverlap = ovArea*100/imageArea;

if (percentOverlap > 80) {
  // do work here
}

答案 3 :(得分:1)

CGRect frame1 = imgView1.frame;
CGRect frame2 = imgView2.frame;

这会给你两个框架结构......它由原点(x,y)值和尺寸(宽度,高度)值组成..

根据您的需要进行比较。