我使用(..) [UIView commitAnimations]
制作了大量观看动画。
现在我想检查“拍摄”的视图是否触及另一个视图。
有谁知道如何实现这个?
也许if(view.frame.origin.x==anotherview.frame.origin.x){
}
..
答案 0 :(得分:22)
从概念上讲,如果视图的边界相交,则视图会“触及”另一个视图。因此,要比较两个视图的边界值,您需要执行以下操作:
Boolean viewsOverlap = CGRectIntersectsRect(viewA.bounds, viewB.bounds);
但仅此一点是行不通的,因为视图的边界部分是在它们自己的坐标空间中指定的(意味着它们都从0,0
开始等等。)所以你还需要将rects转换为a比较它们之前的公共坐标空间:
CGRect boundsA = [viewA convertRect:viewA.bounds toView:nil];
CGRect boundsB = [viewB convertRect:viewB.bounds toView:nil];
Boolean viewsOverlap = CGRectIntersectsRect(boundsA, boundsB);
从那里,你应该能够弄清楚如何有效地迭代你的视图列表 - 你关心 - 以确定是否有任何重叠。
答案 1 :(得分:4)
或者你可以比较帧,如果它们在同一个超级视图中:
BOOL methodB = CGRectIntersectsRect(viewA.frame, viewB.frame);