2011-10-26 5 views
1

私はナビゲーションコントローラに関連付けられたタブバーを備えたiPhoneアプリを開発中です。これらのコントローラの1つでは、テーブルビューでいくつかのリストを表示し、行を選択すると別のビューに特定の情報が表示され、ボタンで関連する写真が表示されます。iphoneデバイスのローテーションでのランドスケープ表示の処理

写真ビューを横に表示する際に問題が発生しました。

写真ビューコントローラには、一度に1枚の写真を表示するためのUIImageViewが含まれています。このImageViewオブジェクトのサイズはフルスクリーンモードで320x460です。回転を処理するために、私は次のコードを追加しました:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
} 

をしかし、それは回転していないとiPhoneシミュレータのステータスバーが縦位置にまだあるので、あまり回転しません。

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return YES; 
} 
それでも

デバイスの回転に変更なし:

は、私はまた、このような方法を変更しました。 のプロジェクト - >概要(タブ) - >サポートされているデバイスの方向 - >希望の方向のオプションは、ランドスケープモード(右/左)を明示的に有効にします。

私は何が欠落しているかも理解できますか?

支援するためのThxを、

ステファン

答えて

2

タブバーコントローラーでは、表示コントローラーのすべてがタブの向きになっている場合のみ回転します。一種の迷惑ですが、そこにはあります。他のすべてのビューコントローラでshouldAutorotateToInterfaceOrientationをオーバーライドする必要があり、それらの向きにスムーズに調整できる必要があります。それは、他のビューコントローラ上の風景の向きをサポートするために実用的ではない場合

、多分あなたはUITabBarControllerをサブクラス化し、現在 View ControllerがYESを返した場合代わりにYESを返すために、そのshouldAutorotateToInterfaceOrientationをオーバーライドすることで、例えば、いくつかのハッキングを試みることができます。しかし、それはあなたのアプリが標準インターフェースの振る舞いを回避しようとしているので、ヒューマンインターフェースガイドラインに準拠していないと拒否されるかもしれません。

+0

私はビューを呼び出すことができると思いますか?これをモーダルに修正できますか? – Steve

+0

タブコントロールで開いているビューコントローラの 'shouldAutorotateToInterfaceOrientation'メソッドをオーバーライドしてください: –

+0

@StephaneKouakouタブバーコントローラからプッシュされたモーダルビューコントローラで回転がどうなるかわかりません。 – morningstar

0

チェックあなたは(自分のUINavigationControllerまたはUITabBarControllerサブクラスなど)サブクラス化されたコンテナビューコントローラのいくつかの並べ替えではいないのであれば。その場合、shouldAutorotateToInterfaceOrientation:メソッドをオーバーライドしないようにしてください。

+0

No ...) – Steve

-1

あなたの間違った場所で探して、次のコードのためのあなたのRootViewController.mファイルを見に:

#elif GAME_AUTOROTATION == kGameAutorotationUIViewController 
// 
//lots of useless comments 
// 
return (UIInterfaceOrientationIsPortrait(interfaceOrientation)); //THIS LINE HERE 
// return (UIInterfaceOrientationIsLandScape(interfaceOrientation)); 

リターン(UIInterface ...ポートレート)という行は、アプリケーションの回転を決めるラインであります能力。これを変更して、完全に回転できるようにするか、特定の方向に保持するか、または任意の方向に保つことができます。

関連する問題