0

iPhone で、-addSublayer: または -removeFromSuperlayer のいずれかを使用して、表示されているビューのレイヤーにサブレイヤーを追加すると、そのサブレイヤーがアニメーションで表示または非表示になるべきではありませんか (つまり、徐々にフェードインまたはフェードアウトします)? 私のプログラムは、(ビューではなく) レイヤーを使用してアニメーション化します。位置や画像コンテンツなどのレイヤーのプロパティを変更すると、変更がアニメーション化されます(レイヤーが親レイヤーの周りに縞模様になり、レイヤーが古い画像から新しい画像にフェードします)、レイヤーとビューが正しく設定されていることは明らかです. ただし、サブレイヤーを追加または削除すると、変更が即座に行われます。アニメーションはありません。

参照を読むと、レイヤーが表示されている場合、サブレイヤーは追加または削除されたときにアニメーション化する必要があると言われています。

私は何を間違っていますか?誰かが同様の問題を抱えていて、解決策を見つけることができましたか?

4

1 に答える 1

3

フェードが必要な場合は、次のCATransitionを使用できます。

CATransition* transition = [CATransition animation];
transition.delegate = nil;
transition.duration = 0.3;
transition.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseOut];
transition.type = kCATransitionFade;
[theLayer addAnimation: transition forKey: nil];

#import <QuartzCore/QuartzCore.h>フレームワークをリンクすることを確認してください。サブレイヤーを追加または削除する直前に、このブロックを呼び出します。

于 2010-04-11T02:09:22.770 に答える