CATextLayer - 如何禁用隐式动画?
CATextLayer - how to disable implicit animations?
这让我发疯。每当我更改 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()
块中,如果你有其他原因这样做,但没有必要只是为了关闭隐式层 属性 动画。)
这让我发疯。每当我更改 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()
块中,如果你有其他原因这样做,但没有必要只是为了关闭隐式层 属性 动画。)