Я только что столкнулся с подобной проблемой, на самом деле, когда вы установили кадр imageView в строке
[imageView setCenter:CGPointMake(240, 160)];
imageView устанавливается в этой точке памяти, просто это происходит из-заБлок анимации показывает, что imageView перемещается к месту назначения, но на самом деле координаты вида назначены месту назначения, вы можете подтвердить это, записав координаты сразу после строки кода.Если вам действительно нужно сделать это аналогичным образом, вы можете использовать таймер вместо блока анимации и анимировать себя.Но я обхожу эту проблему с помощью animationDelegate.Просто установите делегат анимации на себя и определите animationDidStopSelector, и все готово.Ваш animationDidstopSelector будет запущен, когда анимация закончится, и, следовательно, объект достиг своего конечного пункта назначения, или вы можете сказать, что есть столкновение (в пользовательском интерфейсе).Надеюсь, что это поможет
Вот пример кода:
- (void)createNewImageView {
// Get the view's frame to make it easier later on
UIImage *image = [UIImage imageNamed:@"abouffer_03.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
// Add it at a random point
[imageView setCenter:[self randomPointSquare]];
[[self view] addSubview:imageView];
// Animate it into place
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:)];
[UIView setAnimationDuration:8.0f];
[imageView setCenter:CGPointMake(240, 160)];
[UIView commitAnimations];
[imageView release];
}
ваш animationDidStopSelector будет выглядеть так:
-(void)animationDidStop:(id)sender {
//This is almost similar to collision detection, you can do something here
}