Iphone 两图像碰撞问题

Iphone 两图像碰撞问题,iphone,xcode,animation,uiimageview,collision-detection,Iphone,Xcode,Animation,Uiimageview,Collision Detection,这是我的密码: -(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];

这是我的密码:

-(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”但“center”和“ball”尚未碰撞时,我不知道为什么,我认为这是由于动画造成的。

尽管动画需要7秒,
[ball setCenter:CGPointMake(200100)]
立即设置,并且由于
-(无效)碰撞
可能会在“球”与动画中的“中心”相交之前将alpha设置为0.1


代替UIView动画,您可以使用NSTimer缓慢更改“ball”的中心。

您正在安排在viewDidLoad结束时执行该行0.01秒后调用collision。但视图尚未显示,因此显示视图可能需要超过0.01秒

尝试查看显示的视图


话虽如此,我想你还不清楚iOS动画的目的。这些不是用于计算碰撞检测-它们只是用于在设定的时间内将物体从起点移动到终点。我建议您阅读动画系统上的Apple文档。

是的,但我不想使用NSTimer,因为我的程序必须使用UIView动画。还有其他解决方案吗?您只能获取UIView动画的开始和结束位置,因此,您可能无法使用UIView动画进行碰撞检测是的,但如果我不使用UIView动画,这将非常困难。因为“imageView”是在一个随机位置创建的,并且它会移动到屏幕的中心,所以如何使用计时器来实现这一点呢。你有解决方案吗?是的,但如果我不使用UIView动画,这是非常困难的。因为“imageView”是在一个随机的位置创建的,它会移动到屏幕的中心,如何使用计时器来实现这一点是非常困难的。我认为您需要对您试图实现的目标进行更多的描述。您的问题中缺少有助于回答原始问题的代码(例如,在初始化ball和center时)。但我认为您真正的问题可能在于您试图解决的问题所采用的方法。我的代码如下: