2009-07-21 7 views
2

私はこのコードを持っています。値の配列の終わりに、私は不透明度が0.5であることがわかります。しかし何らかの理由で、アニメーションが停止すると、もう一度点滅し、ビューを完全に透明にします。そこに何が問題なの?このCAKeyFrameAnimationが不透明度ゼロで停止するのはなぜですか?

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です。あなたは(デフォルトではYESです)kCAFillModeForwardsにアニメーションのfillModeを設定し、またNOremovedOnCompletionプロパティを設定する必要があります。

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

あなたはこれらのプロパティは、私はあなたの前のために書いたソースに設定されたことに気づくでしょう質問 - 彼らは理由のためにそこにいた。

関連する問題