2009-07-21 4 views
2

이 코드가 있습니다. values ​​배열의 끝에서 나는 불투명도 0.5를 제공하는 것을 볼 수 있습니다. 그러나 어떤 이유로 애니메이션이 멈 추면 다시 한 번 깜박 인 다음보기가 완전히 투명하게됩니다. 거기 뭐가 잘못 됐어?이 CAKeyFrameAnimation이 불투명도가 0으로 중지되는 이유는 무엇입니까?

CALayer *layer = self.layer; 
CAKeyframeAnimation *blinkAnim = [CAKeyframeAnimation animationWithKeyPath:@"opacity"]; 
blinkAnim.duration = 1.0; 
//blinkAnim.repeatCount = 0; 
blinkAnim.autoreverses = NO; 

// keyframe times and values 
// we want to start fully opaque, fade out, stay faded out and fade back in shortly before the end of the cycle 
blinkAnim.keyTimes = [NSArray arrayWithObjects: [NSNumber numberWithFloat:0.0], 
         [NSNumber numberWithFloat:0.4], 
         [NSNumber numberWithFloat:0.6], 
         [NSNumber numberWithFloat:0.85], 
         [NSNumber numberWithFloat:1.0], nil]; 
blinkAnim.values = [NSArray arrayWithObjects: [NSNumber numberWithFloat:1.0], 
        [NSNumber numberWithFloat:1.0], 
        [NSNumber numberWithFloat:0.0], 
        [NSNumber numberWithFloat:0.0], 
        [NSNumber numberWithFloat:0.5], nil]; 
[layer addAnimation:blinkAnim forKey:nil]; 

답변

5

CAAnimation의 기본 fillMode은 (here 참조) kCAFillModeRemoved입니다. 당신은 kCAFillModeForwards에 애니메이션의 fillMode을 설정하고, 또한 (기본적으로는 YES있어) NOremovedOnCompletion 속성을 설정해야합니다

blinkAnim.removedOnCompletion = NO; 
blinkAnim.fillMode = kCAFillModeForwards; 

당신은 그 속성이 내가 이전에 대해 쓴 소스에 설정된 것을 알 수 있습니다 질문 - 그들은 이유가 있었어.

관련 문제