Animieren Sie benutzerdefinierte CALayer Eigenschaften innerhalb einer CATransaction

Bis jetzt hab ich in der Lage gewesen zu animieren, die eigenen Eigenschaften meiner CALayer Unterklasse, Dank + (BOOL)needsDisplayForKey:(NSString *)key und CABasicAnimations.

Doch es stellt sich heraus, dass die Verkettung von Animationen kann sich sehr schwierig, da der gesamte code, der findet in einem einzigen animationDidStop:finished: Methode.

Also wollte ich wechseln zu CATransactions da Sie die Unterstützung der neuen block-syntax, die mir erlauben würde, geben Sie eine Abschluss-block mit + (void)setCompletionBlock:(void (^)(void))block.

Aber es scheint mir, dass CATransaction können nur animieren, die so genannte "animierbare Eigenschaften", und es funktioniert nicht mit meiner benutzerdefinierten layer-Eigenschaften, sogar mit der needsDisplayForKey: Methode implementiert.

Gibt es also eine Möglichkeit, benutzerdefinierte Eigenschaften in einem CALayer zu animieren, mit CATransaction?

EDIT:
Meine Absicht ist, zu tun, etwas entlang der Linien:

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

myLayer.myProperty = newValue;

[CATransaction commit];

Dem update von myProperty-Wert zu newValue ist nicht animiert. Ich habe versucht zu implementieren
actionForLayer:forKey: in der Ansicht verwalten myLayer, um wieder eine CABasicAnimation. Aber actionForLayer:forKey: wird niemals aufgerufen, mit der Taste myProperty. Und ja, myLayer ist nicht view.layer aber eine Unterebene, und ja ich habe die Delegierten myLayer an die übergeordnete Ansicht.

InformationsquelleAutor romrom | 2010-11-08
Schreibe einen Kommentar