这是我的代码:
-(void)collision {
if(CGRectIntersectsRect(ball.frame,center.frame)) {
center.alpha=0.1;
}
}
-(void)viewDidLoad {
[super viewDidLoad];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:7.0f];
[ball setCenter:CGPointMake(200, 100)];
[UIView commitAnimations];
[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(collision) userInfo:nil repeats:YES];
}
我的问题是,当viewDidLoad“center.alpha = 0.1”但“中心”和“球”还没有碰撞时,我不知道为什么,我认为这是由于动画。
答案 0 :(得分:1)
虽然动画需要7秒钟,但[ball setCenter:CGPointMake(200, 100)];
会立即设置,因为- (void)collision
可能会在动画中“ball”与“center”相交之前将alpha设置为0.1。
您可以使用NSTimer慢慢更改“球”的中心,而不是UIView动画。
答案 1 :(得分:0)
在viewDidLoad结束处执行该行后0.01秒,您正在安排对冲突的调用。但视图尚未显示,因此显示视图可能需要超过0.01秒。
尝试viewDidAppear
话虽如此,我认为你不清楚iOS中动画的目的。这些不是用于计算碰撞检测 - 它们仅用于在设定时间内从起点移动到终点。我建议你阅读关于动画系统的Apple文档。