2011-12-18 3 views

答えて

20

概念的には、ビューは、その境界矩形が交差する場合、別のビューに「触れる」。で開始し、両方を意味する(座標空間

Boolean viewsOverlap = CGRectIntersectsRect(viewA.bounds, viewB.bounds); 

しかし、ビューの境界rectsが、自分の中で指定されているので、一人でいることが動作しません:だからあなたのような何かをしたい、2つのビューの境界rectsを比較します0,0、などなど)だから、あなたも、あなたがそれらを比較する前に、共通の座標空間にrectsを変換する必要があります。

CGRect boundsA = [viewA convertRect:viewA.bounds toView:nil]; 
CGRect boundsB = [viewB convertRect:viewB.bounds toView:nil]; 
Boolean viewsOverlap = CGRectIntersectsRect(boundsA, boundsB); 

そこから、あなたはあなたのリストを効率的に反復処理する方法を見つけ出すことができるはずですviews-you-care-aboutは重複があるかどうかを判断するためのものです。彼らは同じスーパーになら

+1

+1もこれは完璧に動作 – Till

4

代わりにあなただけのフレームを比較することができます:

BOOL methodB = CGRectIntersectsRect(viewA.frame, viewB.frame); 
+0

説明しました! – Bobby

関連する問題