我的视图中有两个UIButton,我试图检测两者是否重叠,以便做:
if(重叠) 移动第二个按钮
我试过这个:
if (BluetoothDeviceButton.X1 < btn.X2 && BluetoothDeviceButton.X2 > btn.X1 &&
BluetoothDeviceButton.Y1 < btn.Y2 && BluetoothDeviceButton.Y2 > btn.Y1){
}
我不能真正得到我应该放的东西而不是X1,X2等。我真的不知道这种方法是否会起作用。
答案 0 :(得分:6)
CGRectIntersectsRect(CGRect rect1, CGRect rect2)
会告诉您他们的框架是否重叠。
if (CGRectIntersectsRect(btn.frame, BluetoothDeviceButton.frame)) {
...
}
答案 1 :(得分:0)
您需要使用BluetoothDeviceButton.frame.origin.x
或BluetoothDeviceButton.center.x
。
答案 2 :(得分:0)
首先确保它们处于同一视图中。如果没有,则使用convertRectToView
或converRectFromView
获取其框架。然后使用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属性也包含大小。