3

暗黙のうちに物事は正常に動作します。しかし、明示的なアニメーションを使用して 1 つのレイヤーで複数のアニメーション (不透明度と移動など) を実行しようとすると、奇妙な結果が得られます。

まずはCATransactionを使ってみました。その後、CAAnimationGroup に切り替えました。どちらも私が欲しいものを手に入れていないようです。

私が欲しいものは?私が望むのは、レイヤーが最初の不透明度とターゲットの不透明度であるポイントから別のポイントに移動することだけです。それでおしまい!

私は何を見ていますか?ここに一例があります...

トランザクションの開始/コミットを実行すると、変換は正しいように見えますが、不透明度は正しくありません。私の開始不透明度は 0 で、目標不透明度は 0.5 です。ただし、アニメーションを実行すると、0.5 にブレンドされますが、1.0 (完全に不透明) に「スナップ」されます。

removedOnCompletion を NO に設定してみました。しかし、それも役に立ちませんでした。肝心なのは、AnimationGroup と Transaction の違いを知る必要があるということです。

誰かがこれを説明できますか、そしておそらく私のアニメーションの奇妙さに関して私が見ていることはありますか?

ありがとう!

4

2 に答える 2

1

わかりました、露骨なアニメーションは私にとってはうまくいきません。(レイヤーの)不透明度の基本的なアニメーションを作成してみました。これをアニメーション グループ内に配置しました。実行しても何も起こりません。簡単にするために、翻訳アニメーションを取り出しました。これは、不透明アニメーションを実行しようとしているだけです。

CAAnimationGroup *group = [CAAnimationGroup animation];

CABasicAnimation *opacityAnimation;     
opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];  
opacityAnimation.fromValue = [NSNumber numberWithDouble:fromalpha];     
opacityAnimation.toValue = [NSNumber numberWithDouble:toalpha];     
opacityAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
opacityAnimation.delegate = self;
opacityAnimation.duration = 2.7;        

opacityAnimation.removedOnCompletion = NO;

group.animations = [NSArray arrayWithObjects: opacityAnimation, nil];
[baseLayer addAnimation:group forKey:@"groupAnim"];
于 2009-08-28T05:26:06.230 に答える
0

明示的なアニメーションでは、アニメーションの後にレイヤーの不透明度を値に設定する必要があります。

layer.opacity=0.0f;
于 2012-03-30T07:26:07.123 に答える