我正在一个可以拖动图像的项目中工作。其中,如果我将一个图像放在另一个图像上,则必须更改图像。 我需要的是 1)我想检查两个图像是否在同一个地方。 2)图像的位置必须不准确。它可能大致相等
答案 0 :(得分:8)
如果你想检查两个UIImages是否相交,这是一个好方法:
CGRect rect1 = myView1.frame;
CGrect rect2 = myView2.frame;
if (CGRectIsNull(CGRectIntersection(rect1, rect2))) {
//They collide
}
您可以在此处获得有关此内容的所有信息:
答案 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)值和尺寸(宽度,高度)值组成..
根据您的需要进行比较。