我正在尝试将视图设置为闪烁的插入符号(就像在文本编辑器中一样)。我不希望插入符号插入;我正在使用不透明度来显示/隐藏光标,我希望它直接从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
,则插入符号会动画!发生了什么事?!
答案 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;