次のコードを使用して、CALayer の opacity-property をアニメーション化しています。
メソッドでアニメーションを作成する:
+ (CABasicAnimation *)fadeIn:(float)begin duration:(float)duration remove:(BOOL)remove{
CABasicAnimation *fadeAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeAnimation.fromValue = [NSNumber numberWithFloat:0.0];
fadeAnimation.toValue = [NSNumber numberWithFloat:1.0];
fadeAnimation.additive = NO;
fadeAnimation.removedOnCompletion = remove;
fadeAnimation.beginTime = begin;
fadeAnimation.duration = duration;
fadeAnimation.fillMode = kCAFillModeBoth;
return fadeAnimation;
}
レイヤーにアニメーションを追加する:
[overlayLayer addAnimation:[VideoComposerHelpers fadeIn:1.0 duration:0.5 remove:NO] forKey:nil];
これは完璧に機能しています。ただし、最初のアニメーションが終了した直後に、同じレイヤーに別のアニメーションを追加したいと考えています。
[overlayLayer addAnimation:[VideoComposerHelpers fadeOut:1.5 duration:0.5 remove:NO] forKey:nil]; // fadeOut is a method similar to fadeIn
レイヤーは 0.5 のデュレーションでフェードインし、その直後に 0.5 のデュレーションでフェードアウトします。ただし、これは機能しないようです。2番目のアニメーションの開始点が最初のアニメーションの終了点と同じだからでしょうか?