CATextLayer - 如何禁用隐式动画?

时间:2015-04-02 22:42:53

标签: ios cocoa-touch animation core-animation calayer

这让我很生气。每当我更改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()

它仍然会动画!请帮忙,如何禁用隐式动画?

1 个答案:

答案 0 :(得分:5)

问题在于CATransaction.disableActions()没有按照您的想法行事。你需要说CATransaction.setDisableActions(true)

然后你可以摆脱你所说的所有其他东西,因为它毫无意义。仅此代码足以在没有动画的情况下更改颜色:

CATransaction.setDisableActions(true)
layer.foregroundColor = UIColor.redColor().CGColor // or whatever

(如果您有其他理由,可以将其打包在begin() / commit()块中,但不需要为了关闭隐式图层属性动画。)