用于闪烁插入符的CAKeyframeAnimation

时间:2015-01-08 02:01:05

标签: objective-c core-animation

我正在尝试将视图设置为闪烁的插入符号(就像在文本编辑器中一样)。我希望插入符号插入;我正在使用不透明度来显示/隐藏光标,我希望它直接从1.0到0.0。这是我到目前为止所做的:

CAKeyframeAnimation* blinkAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
blinkAnimation.values = @[ @(1.0), @(0.0) ];
blinkAnimation.keyTimes = @[ @0.0, @0.5 ];
blinkAnimation.duration = 1.0;
blinkAnimation.calculationMode = kCAAnimationDiscrete;
blinkAnimation.repeatCount = HUGE_VALF;
blinkAnimation.removedOnCompletion = NO;

由于一些奇怪的原因,插入符号以完全不透明度绘制,并且永远不会以零不透明度绘制。 然而,如果我从blinkAnimation.calculationMode = kCAAnimationDiscrete更改为blinkAnimation.calculationMode = kCAAnimationLinear,则插入符号会动画!发生了什么事?!

1 个答案:

答案 0 :(得分:1)

如果calculateMode设置为kCAAnimationDiscrete,则数组中的第一个值必须为0.0,最后一个值必须为1.0。该数组应该比values数组中显示的条目多一个。例如,如果有两个值,则应该有三个关键时间。

CAKeyframeAnimation* blinkAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
blinkAnimation.values = @[ @(1.0), @(0.0), @(1.0)];
blinkAnimation.keyTimes = @[ @0.0, @0.5, @1.0];
blinkAnimation.duration = 1.0;
blinkAnimation.calculationMode = kCAAnimationDiscrete;
blinkAnimation.repeatCount = HUGE_VALF;
blinkAnimation.removedOnCompletion = NO;
相关问题