[iOS][Xcode 4.2]回転、その後

 UITabBarControllerを親として回転させる事が出来るのは分かった。
 さて、今回作りたいのは、I/Fだけで言えばiPhoneのミュージックappの様な

  • あるタブが選択されているときは回転によるPortrait → Landscape の切り替えを許可しない
  • あるタブが選択されている時、回転によるPortrait → Landscape の切り替えを許可する
  • また、その時単純に回転させる訳ではなく、別のビューへと切り替える
  • さらに、その時に下部にあるTabBarを表示させなくする

 というもの。

 回転は問題ないのだけど、その後が意外とめんどい。
 単純に「ビューを切り替えて」なんていってもそのやり方も沢山ある。

 ルートコントローラのサブビューに新しくビューを追加する方法、サブビュー自体を入れ替えてしまう方法、モーダルビューを上に表示させる方法。

 今回はそのうち、モーダルを上に表示させる方法をとる事にした。
 というのも、どうも回転とTabBarはあまり相性がよろしくないようで、ビューの入れ替えで対応しようとするとTabBarの消去が上手く出来ないのだ。
 ウチの会社の人がいっていたみたいに「bottombarのhiddenステータスをYESにする程度の簡単な事なんでしょ」というように簡単にいかないのだ。

 その点、というか、モーダルのビューを上に表示してしまえばTabBarの問題を気にする必要も無い。
 モーダルビュー表示時のアニメーションをちゃんと選べば画面遷移的にも違和感無く遷移できそうだ。

 ところがいざモーダルにして回転してみると、どうも縦画面表示時にステータスバー(iPhone画面一番上、ケータイの電場状況とか、電池の残量を示している灰色のバー部分の事)が存在していた場所が横画面にしてもすかっとあいてしまっている。

 どうにか直す方法を見つけないと…今はここら辺。