頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


強制的に画面を回転させる方法はやっぱりない?

今取り組んでいる時計アプリで強制的に画面を回転させたいんだけどさ、解決方法が見つからないって悲しいお話だよ。

その時計アプリはユニバーサルアプリで、iPadは全方向サポートなんだけど、iPhoneの方は一部のページだけ全方向サポートしてるんだ。
iPhoneは縦(UIInterfaceOrientationPortrait)だけOKでもいいんだけど、横方向にした時にApple TV経由でウチのテレビに映し出したらやっぱり横方向もサポートしようと思ってね。ほら、テレビの画面って横長だから、iPhone画像が縦長だと両サイドの無駄なスペースでなんとも悲しい感じがするんだよ。そんなわけで、メインのタブだけは全方向サポートしようと思ったんだ。
実際の画像はこんなの(と言っても開発中のハリボテだけど)。

時計アプリの縦

↑これは見ての通り縦。

時計アプリの横

↑これを横方向にするとナビゲーションバーとタブバーは隠すんだ。タブバーを隠のは内部のviewのframeを強制的に設定してるんだけど、方法はこちら:頭と尻尾はくれてやる! タブバーを隠す方法

別にiPhoneを回転してナビゲーションバーとタブバーの表示/隠すの切り替えは特に問題ないんだけど、このページからコードで別のタブへ飛ばすケースがあるんだ。
この時iPhoneが縦だと問題ないんだけど、横にしてる時はタブバーを隠してるでしょ。タブが切り替わった後もタブバーが隠れたままってことに気付いたんだ。
そうなると、縦にしてもタブバー出てこないしどうしようもないってことになっちゃってさ。申請前に気が付いてよかったよ。

タブをコードで切り替えるのは某ViewControllerクラス内で
self.navigationController.tabBarController.selectedIndex = n;
って感じで処理してるんだけど、できることならこの直前にiPhoneが横の状態だけど画面を縦にしたいんだ。

で、いろいろ調べたんだけど簡単にはできない感じだね。
強制的にビューを回転させるという力技はあるんだろうけど、少し違う。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
で返す値を場合により変更するようにして、ビューコントローラーがそれを認識してくれれば、みたいなのを期待してたんだけどそういうのはなさそう。

まあ根本的に考えたらiPhoneが横で正しく表示されていたものが、タップ一つで意に添わず縦で表示される、つまりユーザーがわざわざデバイスを縦に持ち替えるって事自体が問題なんだよね。悔い改めるよ。

<< デバイスの設定と違う言語を表示する方法   TopPage  Siriがタイマーをセットしてくれるのが便利すぎる! >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/586-fc4a53e3




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad