これまで、とのおかげで、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
包含ビューに設定しました。