我对可可很新。好吧,我有多个UIImageView(animationView)在屏幕上飞来飞去。我正在使用UIAnimation类来动画它们。虽然我还有一个UIImageView(myObject)。我试图碰撞这些,而我使用touchesMoved方法在屏幕上移动“myObject”。问题是我无法检测到碰撞。我使用以下方法:
if (CGRectIntersectsRect(animationView.frame, myObject.frame)) {
NSLog(@"Collision occurred");
}
答案 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");
}