检测UI按钮是否重叠

时间:2013-09-26 16:17:22

标签: ios

我的视图中有两个UIButton,我试图检测两者是否重叠,以便做:

if(重叠) 移动第二个按钮

我试过这个:

if (BluetoothDeviceButton.X1 < btn.X2 && BluetoothDeviceButton.X2 > btn.X1 &&
    BluetoothDeviceButton.Y1 < btn.Y2 && BluetoothDeviceButton.Y2 > btn.Y1){

 }

我不能真正得到我应该放的东西而不是X1,X2等。我真的不知道这种方法是否会起作用。

4 个答案:

答案 0 :(得分:6)

CGRectIntersectsRect(CGRect rect1, CGRect rect2)会告诉您他们的框架是否重叠。

if (CGRectIntersectsRect(btn.frame, BluetoothDeviceButton.frame)) {
   ...
}

答案 1 :(得分:0)

您需要使用BluetoothDeviceButton.frame.origin.xBluetoothDeviceButton.center.x

答案 2 :(得分:0)

首先确保它们处于同一视图中。如果没有,则使用convertRectToViewconverRectFromView获取其框架。然后使用CGRectContainsPoint类的CGGeometry并检查一个按钮的任何角落是否位于另一个按钮的框架中。

PS。你的角落将是:

CGFloat x1 = button1.frame.origin.x;
CGFloat y1 = button1.frame.origin.y;
CGFloat x2 = button1.frame.origin.x + button1.frame.size.width;
CGFloat y2 = button1.frame.origin.y + button1.frame.size.height;

你的角落将是:

CGPoint topLeft = CGPointMake(x1,y1);
CGPoint topRight = CGPointMake(x2,y1);
CGPoint bottomLeft = CGPointMake(x1,y2);
CGPoint bottomRight = CGPointMake(x2,y2);

这只是一种可能的解决方案。这只是为了帮助理解几何。

但最简单的解决方案是使用CGRectIntersectsRect (button1.frame, button2.frame);

答案 3 :(得分:0)

使用BluetoothDeviceButton.frame.origin.x。 Frame属性也包含大小。