2010-07-09 3 views
0

저는 코코아를 처음 사용했습니다. 글쎄, 여러 UIImageView (animationView) 화면 주위를 비행했다. UIAnimation 클래스를 사용하여 애니메이션을 만들고 있습니다. 나는 UIImageView (myObject)를 하나 더 가지고 있는데, 나는 touchesMoved 메소드를 사용하여 화면에서 "myObject"를 움직이는 동안 이것들을 충돌 시키려고한다. 문제는 충돌을 감지 할 수 없다는 것입니다.UIImageViews 애니메이징 간의 충돌을 감지하려고 시도합니다.

if (CGRectIntersectsRect(animationView.frame, myObject.frame)) { 
    NSLog(@"Collision occurred"); 
} 

답변

1

난 당신에 대한 CAAnimation하지 UIAnimation을 얘기하는 가정 : 나는 다음과 같은 방법을 사용하고 있습니다.

코어 애니메이션에서 애니메이션 속성의 현재 값은 적용된 원래 개체 (보기, 레이어)에 반영되지 않습니다. 예 참으로 내가 화면 주위 UIImageViews을 이동 UIAnimation를 사용하고,

CGRect viewFrame = ((CALayer*)[animationView.layer presentationLayer]).frame; 
CGRect objectFrame = ((CALayer*)[myObject.layer presentationLayer]).frame; 
if (CGRectIntersectsRect(viewFrame, objectFrame)) { 
    NSLog(@"Collision occurred"); 
} 
+0

안녕 : 대신 현재 유효 값을 얻을 수있는 레이어의 presentationLayer보고있다. 비슷한 일을 시도했지만 회원 요청이 구조체 또는 공용체의 것이 아니기 때문에 오류가 발생합니다. QuartzCore/QuartzCore.h를 가져 와서 iPhone 응용 프로그램에서 작업합니다. – Vikas

+0

테스트하지 않으면 발생합니다. 나는 캐스트를 잊었다. 'presentationLayer'는 id 타입을 반환하기 때문에 필요합니다. 나는 그 대답을 편집했다. –

+0

Ruhe에게 감사하지만 문제는 여전히 지속됩니다. 내가 여기서 뭘 놓치고 있는지 궁금해. – Vikas

관련 문제