2010-07-09 2 views
0

Я очень новичок в какао. Ну, у меня есть несколько UIImageView (animViewView), летающих вокруг экрана. Я использую класс UIAnimation для их анимации. Хотя у меня есть еще один UIImageView (myObject). Я пытаюсь столкнуться с ними, когда я перемещаю «myObject» вокруг экрана с помощью метода touchhesMoved. Проблема в том, что я не могу обнаружить столкновение. Я использую следующий метод:Попытка обнаружить столкновение между анимацией UIImageViews

if (CGRectIntersectsRect(animationView.frame, myObject.frame)) { 
    NSLog(@"Collision occurred"); 
} 

ответ

1

Я полагаю, вы говорите о CAAnimation, а не UIAnimation.

В основной анимации текущие значения анимированных свойств не отражаются на исходных объектах (представлениях, слоях), на которых они были применены. Вместо этого, вы должны смотреть на слой-х presentationLayer, чтобы получить в настоящее время эффективное значение:

CGRect viewFrame = ((CALayer*)[animationView.layer presentationLayer]).frame; 
CGRect objectFrame = ((CALayer*)[myObject.layer presentationLayer]).frame; 
if (CGRectIntersectsRect(viewFrame, objectFrame)) { 
    NSLog(@"Collision occurred"); 
} 
+0

Привет, да действительно я использовал UIAnimation для перемещения UIImageViews вокруг экрана. Я пытался использовать похожие вещи, но это порождает ошибку, поскольку запрос для члена не является чем-то вроде структуры или union.I импортировал QuartzCore/QuartzCore.h и работает над iPhone-приложением, если это помогает. – Vikas

+0

К сожалению, это происходит, когда вы не тестируете. Я забыл бросок. Это необходимо, так как 'presentationLayer' возвращает типы id. Я отредактировал ответ. –

+0

Спасибо, Ruhe, но проблема все еще сохраняется. Интересно, чего мне здесь не хватает. – Vikas

Смежные вопросы