CATextLayer 的动画foregroundColor 属性
Posted
技术标签:
【中文标题】CATextLayer 的动画foregroundColor 属性【英文标题】:Animating foregroundColor property of CATextLayer 【发布时间】:2011-02-27 19:49:15 【问题描述】:我想对 iPhone 上 CATextLayer 的文本颜色(前景颜色)的变化进行动画处理。根据文档,该属性的隐式动画在 OSX 10.6 上不可用,但没有提及 ios。因此,我只是假设动画必须是显式的才能在 iOS 上运行。
我已使用+(class)layerClass
更改了支持层类,并在 UIView init
方法中为属性设置了初始值。文本显示得很好,以及我应用的所有属性(阴影、字体等),但动画没有任何影响。
下面是我的动画方法,我从一个 KVO 观察方法中调用它,以便当观察到的属性发生变化时,视图会提醒用户。
-(void) animateTextChange
animation = [CABasicAnimation animationWithKeyPath:@"foregroundColor"];
[animation setFromValue:[[UIColor blackColor] CGColor]];
[animation setToValue:[[UIColor whiteColor] CGColor]];
[animation setDuration:2.0f];
[[self layer] addAnimation:animation
forKey:@"foregroundColor"
];
一如既往的感谢。
【问题讨论】:
【参考方案1】:这是我成功做到这一点的唯一方法:
[CATransaction begin];
[CATransaction setAnimationDuration:.5];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
yellowWord.foregroundColor =[UIColor redColor].CGColor;
[CATransaction commit];
希望对大家有所帮助
【讨论】:
我非常希望这能奏效,但它在 iOS9 上对我不起作用 在我将setValue:...
线切换为CATransaction.disableActions()
后,它确实工作了以上是关于CATextLayer 的动画foregroundColor 属性的主要内容,如果未能解决你的问题,请参考以下文章
Choppy CATextLayer 动画:fontSize + position 同时