繁体   English   中英

核心动画-动画无效

[英]Core Animation - animation doesn't work

我正在尝试使用此代码为CALayer的背景色设置动画:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
animation.duration = 0.3;
animation.fromValue = (id)[backgroundLayer backgroundColor];
animation.toValue = (id)[[UIColor redColor] CGColor];
[backgroundLayer addAnimation:animation forKey:@"animateBackgroundColor"];

由于某种原因,这没有任何作用。 只需使用:

[backgroundLayer setBackgroundColor:[[UIColor redColor] CGColor]];

工作(尽管没有动画)并使用:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];
animation.duration=0.3;
animation.fromValue = [NSNumber numberWithFloat:1.0];
animation.toValue = [NSNumber numberWithFloat:0.0];
[backgroundLayer addAnimation:animation forKey:@"animateOpacity"];

也可以(带有动画)。

为什么我不能为背景色设置动画?

编辑:问题与我的backgroundColor是用图案图像创建的(使用UIImage的实现...使用纯色的作品)有关。 我仍在寻找这个问题的答案。

核心动画通过使用插值进行工作-计算您指定的关键值之间的中间值。 如果是关键帧动画,则会在values数组中的数值(n)之间进行插值。 如果是基本动画,则会在两个值之间进行插值-您的开始值和结束值。 CA可以使两种纯色之间的计算很好,因为它们仅由RGBA浮点值表示,但是它将如何在图像之间插值? 它必须进行某种我不相信它能够进行的变形。 如果需要变形效果,最好在视图中的背景图像之间进行过渡。 默认效果是交叉淡入/溶解效果。 那可能并不完全是您想要的,但可能会使您更加接近。

最好的祝福。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM