2013-05-19 4 views
0

안녕하세요 저는 IBOutletCollection의 일부로 3 개의 뷰를 보유하고 있습니다. 그것들은 myArrayOfViews라는 배열에 있습니다. CGRectIntersectsRect를 사용하여 이러한 3 개의보기 중 하나가 겹쳐졌지만 지금까지 아무런 문제가 없는지 확인할 수 있기를 원합니다. 배열을 두 번 반복 한 다음 CGRectIntersectsRect를 실행했지만 운이 없다고 생각했습니다. 나는 무엇이 없는가. 미리 감사드립니다!uiviews 배열의 IBOutletCollection과 함께 CGRectIntersectsRect 사용

for (UIView *view1 in self.myArrayOfViews) { 
    NSLog(@"view1 is %@",view1); 
    for (UIView *view2 in self.myArrayOfViews) { 
     NSLog(@"view2 is %@",view2); 

     if(CGRectIntersectsRect(view1.frame, view2.frame)) { 
      NSLog(@"overlap!"); 
     } 
    } 

} 
+1

이 코드를 실행하면 어떻게됩니까? 당신은 무엇을 기대 했습니까? –

+0

항상 겹치는 것으로 생각합니다. 루프가 실행되면 로그에 기록 할 내용을 더 구체적으로 지정해야합니다. 한 줄에 많은 양의 데이터가 있습니다. – myData

+0

은 그 자체를 던지고있는 자신과 비교하고 있습니까? – myData

답변

1

문제의 원인을 파악했습니다. 두보기가 동일하지 않은지 확인하는 방법은 다음과 같습니다.

for (UIView *view1 in self.myArrayOfViews) { 
    for (UIView *view2 in self.myArrayOfViews) {  
     if (view1 != view2 && CGRectIntersectsRect(view1.frame, view2.frame)) { 
      NSLog(@"overlap!"); 
     } 
    }  
} 
+0

도움을 주셔서 감사합니다.하지만 한 가지 더. else 문을 붙여 다른 NSLog를 실행하면 if와 else가 하나의 뷰와 겹치는 경우 발생합니다. 내가 붙어있을 때까지 모든 전망이 일어났다. 그렇지 않으면 (view1! = view2) 거기에있다. – myData

+0

같은 쌍의보기를 감안할 때'if'와'else' 블록 모두에서 코드를 실행할 수 없으므로 정확히 무엇을 말하고 있는지 잘 모르겠습니다. '프레임'값이 무엇인지 알려 주시면 도움이됩니다. 또한, 모든 형제 자매 (그들은 모두 '슈퍼 뷰'를 가졌습니까?) –