2010-10-13 10 views
0

J'essaie d'obtenir le code suivant d'un livre pour travailler. Il anime la couche d'un UIImageView appelé le poulet:Que manque-t-il à ce code d'animation implicite pour CALayer?

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

Le problème est que ce code n'anime pas. Il ne fait que déplacer le poulet à 225,144 sans aucune animation (il se téléporte là comme par magie). Quelqu'un peut-il m'aider à corriger le code pour que cela fonctionne?

Merci à l'avance,

Martin

Répondre

1

Qu'est-ce qui se passe si vous l'envelopper dans:

[CATransaction begin]; 

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

[CATransaction commit]; 

Si cela ne fonctionne toujours pas, il pourrait être à voir avec le délégué de la couche. Cette couche est-elle une sous-couche? Je pense que le délégué est réglé à zéro sur les couches racine qui auraient cet effet.

Vous pouvez utiliser une place animation UIView:

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

theChicken.position = CGPointMake(225, 144); 

[UIView commitAnimations]; 
+0

Il funes encore là-bas comme par magie :( – GuybrushThreepwood

+0

Je pense que c'est une sous-couche Il est une vue UIImage J'ai créé avec le constructeur d'interface? – GuybrushThreepwood

+0

Ensuite, c'est juste la couche principale des vues.Vous devez utiliser les animations UIView à la place.Je vais modifier ci-dessus – Ben