Home > iPhone SDK / Cocoa / Objective-C > Viewをクロスフェードで切り替えるには

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];

関連する投稿

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://iphone-dev.ensites.net/archives/76/trackback
Listed below are links to weblogs that reference
Viewをクロスフェードで切り替えるには from iPhoneアプリ開発ブログ

Home > iPhone SDK / Cocoa / Objective-C > Viewをクロスフェードで切り替えるには

Search
Feeds
Meta

Return to page top