到目前为止,我已经能够为我的 CALayer 子类的自定义属性设置动画,这要归功于+ (BOOL)needsDisplayForKey:(NSString *)key
和CABasicAnimations
。
然而事实证明,链接动画会变得非常棘手,因为所有代码都发生在一个animationDidStop:finished:
方法中。
所以我想切换到,CATransactions
因为它们支持新的块语法,这将允许我用+ (void)setCompletionBlock:(void (^)(void))block
.
但在我看来,CATransaction
只能为所谓的“动画属性”设置动画,并且它不适用于我的自定义图层属性,即使needsDisplayForKey:
实现了该方法。
那么有没有办法在 a 中制作自定义属性以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:
永远不会用 key 调用myProperty
。是的,myLayer
它view.layer
只是一个子层,是的,我将委托设置myLayer
为包含视图。