ホーム > タグ > CAAnimation

CAAnimation

Viewをクロスフェードで切り替えるには

サンプルコード「ViewTransition」にあるようにCATransitionを使う方法でももちろんよいのですが、UIViewクラスのクラスメソッドを使う方が、登場するクラスが少ないという意味ではよりシンプルです。

ぱっと見ではsetAnimationTransition:forView:cache:メソッドが使えそうですが、1つ目の引数として与えるトランジションのタイプの選択肢にクロスフェードがありません。そこで、あらかじめ切り替え後のビューをalpha=0.0の状態でaddSubview:しておいた上で、以下のようにします。

[UIView beginAnimations:nil context:NULL];
currentView.alpha = 0.0;
nextView.alpha = 1.0;
[UIView commitAnimations];

複雑なアニメーションを作成するにはどうしてもCAAnimationクラスが必要になることもありますが、UIViewのアニメーション関連メソッドを活用することで同様の効果を少しだけ楽に実装することができます。

もっとも、上記の例では切り替え前のビューのインスタンスが残ったままになるため、不要であればsetAnimationDidStopSelector:を使ってアニメーション終了後にremoveFromSuperView:しなければならない、といったように、逆に手間がかかる場合もありますが。

ちなみに、setAnimationDuration:とsetAnimationDelay:を使えば、簡単なキーフレームアニメーションっぽいものも実装できますね。

例)Viewをクロスフェードで切り替えて、すぐにクロスフェードで元に戻す

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
currentView.alpha = 0.0;
nextView.alpha = 1.0;
[UIView commitAnimations];
 
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelay:1.0];
currentView.alpha = 1.0;
nextView.alpha = 0.0;
[UIView commitAnimations];

関連する投稿

Home > Tags > CAAnimation

Search
Feeds
Meta

Return to page top