2015-01-08 3 views
0

뷰를 깜박이는 캐럿으로 애니메이션화하려고합니다 (예 : 텍스트 편집기에서). I 캐럿이 보간되기를 원하지 않습니다. 불투명도를 사용하여 커서를 표시/숨기기를하고 있는데, 1.0에서 0.0으로 곧바로 변경하고 싶습니다. 캐럿은 완전 불투명으로 그려, 어떤 이상한 이유로깜박이는 캐럿에 대한 CAKeyframeAnimation

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

calculationMode가 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; 
관련 문제