sos の 作業メモ

プログラミングや英会話学習、マイルや旅行、日常生活など。最近はWebFormなASP.NETのお守りがお仕事です。

日々の生活にhappyをプラスする|ハピタス Gポイント

排他表示のUIViewをアニメーションで差し替える

一つのWindowの中に、排他で表示されるUIViewを複数保持し、Flip等のアニメーションをしながら別のViewへと表示を切り替える方法です。

UIView の transitionFromView:toView:duration:options:completion:

を使えば簡単。表示中のViewと切替後のViewとアニメーションと時間を指定するだけ。 デフォルトでは fromViewの方は superviewから取り除かれるので、hiddenでの制御だけにする場合には、optionsにUIViewAnimationOptionShowHideTransitionViewsを追加する必要があります。

InterfaceBuilderで2つのViewを定義し、それをhiddenの制御で切り替える場合、 以下の様に書くだけで、上から縦に0.5秒でフリップします。hiddenの管理もこのメソッドがやってくれるので、こちらで何かをする必要もありません。

// 表示中のviewを _curview 、 切替先のviewを _nextviewとする 
[UIView transitionFromView:_curview toView:_nextview duration:0.5 options:UIViewAnimationOptionTransitionFlipFromTop | UIViewAnimationOptionShowHideTransitionViews completion:nil];

最初、Documentをちゃんと読んでなくて、なぜ古いviewが消えてなくなるのかにしばらく悩まされました…

フリップさせるだけで、ぐんとiOSらしくなるんだから やんなきゃ損ですよね。