这让我发疯。每当我更改CATextLayer.foregroundColor
属性的值时,无论我做什么,该更改都是动画的。例如,我有一个称为CATextLayer
的layer
,它是CALayer
的子层superlayer
:
layer.removeAllAnimations()
superlayer.removeAllAnimations()
superlayer.actions = ["sublayers" : NSNull()]
CATransaction.begin()
CATransaction.setAnimationDuration(0)
CATransaction.disableActions()
CATransaction.setValue(kCFBooleanTrue, forKey:kCATransactionDisableActions)
layer.actions = ["foregroundColor" : NSNull()]
layer.actions = ["content" : NSNull()]
layer.foregroundColor = layoutTheme.textColor.CGColor
CATransaction.commit()
而且它仍然会动画!请帮助,如何禁用隐式动画?
最佳答案
问题是CATransaction.disableActions()
不会执行您认为的操作。您需要说CATransaction.setDisableActions(true)
。
然后,您可以摆脱您在说的所有其他内容,因为这毫无意义。仅此代码就足以改变颜色而无需动画:
CATransaction.setDisableActions(true)
layer.foregroundColor = UIColor.redColor().CGColor // or whatever
(如果有其他原因,您可以将其包装在
begin()
/ commit()
块中,但是不需要关闭隐式图层属性动画。)关于ios - CATextLayer-如何禁用隐式动画?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29423689/