Cocoa touch 尝试检测正在设置动画的UIImageView之间的冲突

Cocoa touch 尝试检测正在设置动画的UIImageView之间的冲突,cocoa-touch,core-animation,Cocoa Touch,Core Animation,我对可可很陌生。我有多个UIImageView(animationView)在屏幕上四处飞行。我正在使用UIAnimation类为它们设置动画。当我还有一个UIImageView(myObject)时,我尝试在屏幕上使用TouchsMoved方法移动“myObject”时碰撞这些。问题是我无法检测到碰撞。我正在使用以下方法: if (CGRectIntersectsRect(animationView.frame, myObject.frame)) { NSLog(@"Collision

我对可可很陌生。我有多个UIImageView(animationView)在屏幕上四处飞行。我正在使用UIAnimation类为它们设置动画。当我还有一个UIImageView(myObject)时,我尝试在屏幕上使用TouchsMoved方法移动“myObject”时碰撞这些。问题是我无法检测到碰撞。我正在使用以下方法:

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

我想你说的是
CAAnimation
,而不是UIAnimation

在核心动画中,已应用动画特性的原始对象(视图、层)中不会反映动画特性的当前值。相反,您必须查看层的
presentationLayer
,以获取当前有效值:

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

嗨,是的,我确实在使用UIAnimation在屏幕上移动UIImageView。我曾经尝试过使用类似的东西,但它给我带来了一个错误,因为成员请求不是一个结构或联合。我已经导入了QuartzCore/QuartzCore.h,并在一个iPhone应用程序上工作,如果有帮助的话。哦,当你不测试时就会发生这种情况。我忘了演员。这是必需的,因为
presentationLayer
返回id类型。我编辑了答案。谢谢Ruhe,但问题仍然存在。我想知道我在这里错过了什么。