这让我发疯。每当我更改CATextLayer.foregroundColor属性的值时,无论我做什么,该更改都是动画的。例如,我有一个称为CATextLayerlayer,它是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/

10-12 01:52