ios - CATextLayer-如何禁用隐式动画?

标签 ios cocoa-touch animation core-animation calayer

这让我发疯。每当我更改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/

相关文章:

objective-c - NSOutputStream,NSStreamEventHasSpaceAvailable事件过去后如何正确输出数据?

ios - 在 UIPickerView 出现之前加载数据

animation - 淡出 UITextField 文本

ios - 如何从 xib 中的单元格转到 Storyboard 中的 VC

ios - 快速显示和隐藏导航栏

iphone - 从 CLLocationDegrees 生成一个字符串,例如在 NSLog 或 StringWithFormat 中

iOS - 多层使动画变慢

ios - 顺序 iOS 动画*没有* block ?

ios - 重新加载 UITableView 导致标签设置不正确

iphone - Objective C - UIActivityIndi​​catorView定位