これまで、とのおかげで、CALayerサブクラスのカスタムプロパティをアニメーション化することができまし+ (BOOL)needsDisplayForKey:(NSString *)keyたCABasicAnimations。
animationDidStop:finished:ただし、すべてのコードが1つのメソッドで実行されるため、アニメーションの連鎖は非常に難しい場合があります。
そこで、新しいブロック構文をサポートしているので、に切り替えたいと思いましたCATransactions。これにより、で完了ブロックを指定できるようになります+ (void)setCompletionBlock:(void (^)(void))block。
しかし、CATransactionいわゆる「アニメーション化可能なプロパティ」しかアニメーション化できないように見え、needsDisplayForKey:実装されたメソッドを使用しても、カスタムレイヤープロパティでは機能しません。
CALayerでは、でアニメーション化するカスタムプロパティを作成する方法はありCATransactionますか?
編集: 私の意図は、線に沿って何かをすることです:
[CATransaction begin];
[CATransaction setAnimationDuration:0.5];
[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[CATransaction setCompletionBlock:^{
NSLog(@"blabla");
}];
myLayer.myProperty = newValue;
[CATransaction commit];
myProperty値のへの更新はnewValueアニメーション化されません。actionForLayer:forKey:myLayerを管理するビューに実装
して、を返すようにしましたCABasicAnimation。ただしactionForLayer:forKey:、キーで呼び出されることはありませんmyProperty。はい、それはサブレイヤーに過ぎmyLayerません。はい、view.layerのデリゲートをmyLayer包含ビューに設定しました。