Objective c 目标C:检查视图是否与其他视图接触
我使用Objective c 目标C:检查视图是否与其他视图接触,objective-c,ios,user-interface,view,Objective C,Ios,User Interface,View,我使用(…[UIView commitAnimations]为许多视图设置动画。 现在,我想检查该视图(即“shot”)是否接触到另一个视图。 有人知道如何实现这一点吗? 可能if(view.frame.origin.x==anotherview.frame.origin.x){ }。从概念上讲,如果一个视图的边界矩形相交,则该视图会“接触”另一个视图。因此,要比较两个视图的边界矩形,需要执行以下操作: Boolean viewsOverlap = CGRectIntersectsRect(vi
(…[UIView commitAnimations]
为许多视图设置动画。
现在,我想检查该视图(即“shot”)是否接触到另一个视图。
有人知道如何实现这一点吗?
可能if(view.frame.origin.x==anotherview.frame.origin.x){
}
。从概念上讲,如果一个视图的边界矩形相交,则该视图会“接触”另一个视图。因此,要比较两个视图的边界矩形,需要执行以下操作:
Boolean viewsOverlap = CGRectIntersectsRect(viewA.bounds, viewB.bounds);
但这一点本身不起作用,因为视图的边界矩形是在它们自己的坐标空间中指定的(这意味着两者都从0,0
等开始),所以在比较它们之前,还需要将矩形转换为公共坐标空间:
CGRect boundsA = [viewA convertRect:viewA.bounds toView:nil];
CGRect boundsB = [viewB convertRect:viewB.bounds toView:nil];
Boolean viewsOverlap = CGRectIntersectsRect(boundsA, boundsB);
从这里,您应该能够了解如何有效地迭代您关心的视图列表,以确定是否有重叠。或者,如果帧位于同一个superview中,您可以只比较帧:
BOOL methodB = CGRectIntersectsRect(viewA.frame, viewB.frame);