如何检测两个UIViews的帧是否在触摸?

时间:2016-01-19 10:08:04

标签: ios objective-c uiview frame

我有两个UIView个对象,我想检查它们的帧的任何部分是否相互接触。

如下图所示:

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以使用CGRect程序来完成您想要的任务。只需检查CGRectIntersectsRect( rect1, rect2),其中rect1是第一个视图的框架,rect2是第二个视图的框架。祝你好运!

答案 1 :(得分:0)

如果View 1垂直向下,那么很容易通过检查.x轴来判断它们是否会相交,当然还会增加宽度。

基本上我们会检查2个案例,如果 View2.x< = View1.x + View1.width< = View2.x + View2.width

Swift示例:

let view1TotalWidth = View1.frame.origin.x + View1.frame.size.width
let view2TotalWidth = View2.frame.origin.x + View2.frame.size.width

if View2.frame.origin.x <= view1TotalWidth && view1TotalWidth <= view2TotalWidth {
   print("They will intersect")
}

现在我们需要检查第二种情况,当正确的点(我们上面检查过的)现在超出了view2TotalWidth,这基本上几乎相同:

View2.x&lt; = View1.x&lt; = View2.x + View2.width

同样,答案是假设view1将从他当前的起始位置垂直下拉。