我正在尝试创建一些东西,如果我有一个黄色背景的UIView,这个视图正在屏幕上移动,并在某处放置了另一个带有红色背景的UIView。我怎么知道黄色是否触摸红色? - 这意味着第一个视图触及另一个视图。
答案 0 :(得分:0)
在动画期间,您必须定期检查交叉路口,如@ AMI289所说。 e.g。
- (void)animate {
// Use an NSTimer to check for intersection 10 times per second
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(checkForCollision) userInfo:nil repeats:YES];
[UIView animateWithDuration:5 animations:^{
// Do the animation
} completion:^(BOOL complete) {
// Tell timer to stop calling checkForCollision
[timer invalidate];
}];
}
- (void)checkForCollision {
if (CGRectIntersectsRect([viewOne.layer.presentationLayer frame], [viewTwo.layer.presentationLayer frame])) {
// Handle collision
}
}
获取正在设置动画的视图的表示层非常重要,否则您将无法检测到屏幕上视图位置的增量更改。完成后,您还需要使计时器无效,否则您的checkForCollision
方法将无限期地继续运行。