试图检测动画UIImageViews之间的碰撞

时间:2010-07-09 10:19:10

标签: cocoa-touch core-animation

我对可可很新。好吧,我有多个UIImageView(animationView)在屏幕上飞来飞去。我正在使用UIAnimation类来动画它们。虽然我还有一个UIImageView(myObject)。我试图碰撞这些,而我使用touchesMoved方法在屏幕上移动“myObject”。问题是我无法检测到碰撞。我使用以下方法:

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

1 个答案:

答案 0 :(得分:1)

我假设你在谈论的是CAAnimation,而不是UIAnimation。

在核心动画中,动画属性的当前值不会反映在应用它们的原始对象(视图,图层)中。相反,您必须查看图层的presentationLayer才能获得当前有效的值:

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