2010-10-13 2 views
0

Я пытаюсь получить следующий код из книги для работы. Он одушевляет слой UIImageView называется Chicken:Что мне не хватает из этого неявного кода анимации для CALayer?

[CATransaction setValue:kCAMediaTimingFunctionEaseInEaseOut forKey:kCATransactionAnimationTimingFunction]; 
[CATransaction setValue:[NSNumber numberWithFloat:1.0] forKey:kCATransactionAnimationDuration]; 
theChicken.position = CGPointMake(225, 144); 

Проблема заключается в том, что этот код не анимировать. Он просто перемещает цыпленка до 225 144 без анимации вообще (он просто телепортируется туда, как магия). Может ли кто-нибудь помочь мне исправить код, чтобы он работал?

Спасибо заранее,

Martin

ответ

1

Что произойдет, если вы заключаете его в:

[CATransaction begin]; 

[CATransaction setValue:kCAMediaTimingFunctionEaseInEaseOut forKey:kCATransactionAnimationTimingFunction]; 
[CATransaction setAnimationDuration:1.0]; 
theChicken.position = CGPointMake(225, 144); 

[CATransaction commit]; 

Если он все еще не работает, это может быть связано с уровня делегата. Является ли этот слой подслоем? Я думаю, что делегат установлен на ноль на корневых слоях, которые будут иметь такой эффект.

Вы можете использовать UIView анимации вместо:

[UIView beginAnimations:@"anim1" context:nil]; 
[UIView setAnimationDuration:1.0]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 

theChicken.position = CGPointMake(225, 144); 

[UIView commitAnimations]; 
+0

Он по-прежнему перекосов там, как по волшебству :( – GuybrushThreepwood

+0

Я думаю, что это подуровень Это вид UIImage я создал с интерфейсом строитель? – GuybrushThreepwood

+0

Тогда его просто вид сверху. Вместо этого вы должны использовать анимацию UIView. Я отредактирую выше. – Ben

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

  • Нет связанных вопросов^_^