В моем UIView я создал UIImageView с именем targetView, где я установил для него серию анимаций:
[UIView animateWithDuration:1.0
animations:^{self.targetView.center = CGPointMake(220,20);}
completion:^(BOOL finished){
//another animation will begin;
}];
Я также создал еще один UIImageView с именем shootView, который будет перемещаться в целевом направлении по прикосновению пальца. Его движение также реализовано в виде анимации. В конце анимации определите пересечение с targetView:
[UIView animateWithDuration:1.0
animations:^{
self.shootView.center = CGPointMake(destX, destY);}
completion:^(BOOL finished){
if (CGRectIntersectsRect(self.targetView.frame, self.shootView.frame)) {
//do something
}];
Теперь есть проблема: команда пересечения работает нормально только в том случае, если targetView достиг конечной точки текущей анимации, а ShootView оказывается там. Пока targetView находится в движении где-то в середине анимации, пересечение не может быть обнаружено, даже если визуально совершенно очевидно, что два кадра пересекаются.