Animer personnalisé CALayer propriétés à l'intérieur d'un CATransaction

Jusqu'à maintenant j'ai été capable d'animer les propriétés personnalisées de mon CALayer sous-classe, grâce à + (BOOL)needsDisplayForKey:(NSString *)key et CABasicAnimations.

Cependant, il s'avère que le chaînage des animations peuvent devenir très difficile parce que tout le code se déroule dans un seul animationDidStop:finished: méthode.

Donc je voulais passer à CATransactions depuis qu'ils soutiennent le nouveau bloc de la syntaxe, ce qui me permet de spécifier un achèvement bloc avec + (void)setCompletionBlock:(void (^)(void))block.

Mais il me semble que CATransaction ne peut animer la soi-disant "propriétés animables" et il ne fonctionne pas avec mon custom propriétés de la couche, même avec la needsDisplayForKey: méthode mise en œuvre.

Donc, il y a une façon de faire de propriétés personnalisées dans un CALayer pour animer avec CATransaction?

EDIT:
Mon intention est de faire quelque chose le long des lignes de:

[CATransaction begin];
[CATransaction setAnimationDuration:0.5];
[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[CATransaction setCompletionBlock:^{
    NSLog(@"blabla");
}];

myLayer.myProperty = newValue;

[CATransaction commit];

La mise à jour de myProperty de la valeur à newValue n'est pas animé. J'ai essayé de mettre en œuvre
actionForLayer:forKey: dans la vue gestion des myLayer retour d'un CABasicAnimation. Mais actionForLayer:forKey: n'est jamais appelé avec la touche myProperty. Et oui, myLayer n'est pas view.layer mais une sous-couche, et oui j'ai mis le délégué de myLayer de la vue.

OriginalL'auteur romrom | 2010-11-08