2009-08-27 8 views
3

明示的に動作しません。しかし、明示的なアニメーションを使用して単一のレイヤーで複数のアニメーションを実行しようとすると(たとえば、不透明度と平行移動など)、私は奇妙な結果を得ます。CALayerの明示的なアニメーションが正しく動作しません。

まず、私はCATransactionを使ってみました。それからCAAnimationGroupに切り替えました。どちらもdoesntは私が欲しいものを得るように見えます。

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

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

トランザクションbegin/commitを実行すると、翻訳は正しいように見えますが、不透明度は正しくありません。私の開始不透明度は0で、ターゲット不透明度は0.5です。 しかし、アニメーションを実行すると、0.5にブレンドされますが、1.0にスナップします(完全に不透明)。

私はremovedOnCompletionをNOに設定しようとしました。しかし、それはいずれも助けませんでした。 私は、アニメーショングループとトランザクションの違いを知る必要があるという結論に達したと思います。

誰でもこのことを説明できますか、おそらく私のアニメーションの奇妙さについて何を見ていますか?

ありがとうございます!

+0

レイヤのアルファ値と位置プロパティを設定することで、これらのプロパティを暗黙的にアニメーション化することができます。あなたが正しい軌道に乗っているように聞こえる。それらをCATransaction begin/commitで一緒にスタックすると、それらは原子的にアニメートされます。それが正しく動作しない場合は、コードを投稿してください。 –

+0

暗黙のアニメーションは機能しますが、明示的に作成したいのは、アニメーションが完了したときに完了したイベントを処理できます。 – AlvinfromDiaspar

答えて

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"]; 
+0

これを追加してみてください: opacityAnimation.fillMode = kCAFillModeForwards; また、コードを選択してツールバーのコードウィジェットをクリックすると、適切にフォーマットされます。 –

0

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

layer.opacity=0.0f; 
関連する問題