排他表示の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らしくなるんだから やんなきゃ損ですよね。