Smo*_*hie 7 user-interface view objective-c ios
我用很多视图制作动画(..) [UIView commitAnimations].现在我想检查"拍摄"的视图是否触及另一个视图.有谁知道如何实现这个?也许if(view.frame.origin.x==anotherview.frame.origin.x){
}..
Jon*_*pan 23
从概念上讲,如果视图的边界相交,则视图会"触及"另一个视图.因此,要比较两个视图的边界值,您需要执行以下操作:
Boolean viewsOverlap = CGRectIntersectsRect(viewA.bounds, viewB.bounds);
Run Code Online (Sandbox Code Playgroud)
但仅此一点是行不通的,因为视图的边界部分是在它们自己的坐标空间中指定的(意味着两者都是从0,0等处开始).因此,在比较它们之前,还需要将rects转换为公共坐标空间:
CGRect boundsA = [viewA convertRect:viewA.bounds toView:nil];
CGRect boundsB = [viewB convertRect:viewB.bounds toView:nil];
Boolean viewsOverlap = CGRectIntersectsRect(boundsA, boundsB);
Run Code Online (Sandbox Code Playgroud)
从那里,你应该能够弄清楚如何有效地迭代你的视图列表 - 你关心 - 以确定是否有任何重叠.