2009-09-03 16 views
3

2つのアプリがあり、どちらも背の高い画面ではなく、より広い画面を表示するために、iPhoneを横向きモードで使用する必要があります。強制的な横向きの向きのアプリの難易度

私が見つけたことの1つは、最初のビューはうまく見えるが、他のすべてのビューは、サブビュー(UIButtons、UIPicker、UIViews)が片側に押し込まれたり、(要素が設定されたかどうかビューのサイズが変更されたときと同じ位置に移動、サイズ変更、または移動する)。私の見解はすべて、IBで横向きにデザインされています。私の基礎となるUIWindow、そして私が考えることができるすべてが、横向きに配置されています。私のplistファイルでさえ、UIInterfaceOrientationLandscapeRightフラグが設定されています。

私のすべてのビューを私のrootviewコントローラと同時にロードすると、問題はありません。しかし、後でビューが読み込まれると、クリップがクリップされたり、絞られたりします。

問題を回避する唯一の方法は、新しいビューに反転し、私のコードに次の行を追加しました:私はこれを行うために必要がある理由

[coming.view setFrame:CGRectMake(0, 0, 480, 300)]; 

誰もが知っていますか?変換が適用されない限り、ロードされたビューは300x480であるとiPhoneが仮定しているだけですか?

ありがとうございました。

ps。これは、前述のようにビューは、私はsetFrameを呼び出さない場合は次のようになります。

alt text http://files.me.com/mahboud/ljhvun

その画面が同様にダウン絞らなければならない最初の1の後にロードされますすべてのviewcontrollers。何らかの理由で、最初のviewcontrollerにこの問題はありません。

+0

これは、iPhone OS 3.1.3の時点では依然として問題であることが確認できます。 ADCメンバーシップには2つの無料サポートインシデントが含まれていますので、私は提出してニュースがあるときにお知らせします。 –

答えて

0

適切な答えは、どのように横向きを強制するかによって異なります。 UIViewControllerと会社を通じてこれをやっているのであれば、それは比較的単純です。他の方法はおそらくもっと複雑です。

単純なケースでは、あなたは、あなたのビューコントローラにInterface Builderでセットアップあなたの意見をshouldAutorotateToInterfaceOrientation:をオーバーライドして、あなたのInfo.plistにUIInterfaceOrientationLandscapeRightからUIInterfaceOrientationキーを設定し、設定することができなければなりません。

+0

UIInterfaceOrientationLandscapeRightはinfo.plistに設定されているので、アプリケーションはgetから行く方向に登場します。 NIBのすべてが同じ方向に設定されています。それでも、2番目と次のビューでは、コンテンツを適切に表示するために、ビューサイズを上記のように設定する必要があります。 – mahboudz

1

私はあなたのアプリでそれぞれの単一のビューで横長モードを使用したいと思います。ペン先は横長モードにしたい。ペンタブで(ステータスバーの場合は0,0,480,300、ステータスバー以外の場合は320)、ビューのサイズを変更できます。そしてあなたが望むものをデザインする。最後に、View Controllerでは、自動回転のためにnoを返します。最後にビューを変換して回転します。

+0

Iに変更されたすべての私の \tリターン((interfaceOrientation == UIInterfaceOrientationLandscapeLeft)|| \t \t \t \t(interfaceOrientation == UIInterfaceOrientationLandscapeRight)); すべてのケースで代わりにNOを返すようにします。アプリはポートレートモードですべてのビューを表示します。 – mahboudz

+2

あなたは 'shouldAutorotate'のためにNOを返すべきではありません。 NOを返すということは、あなたがどんな方向に向かうことも望まないということです。不可能です。 UIKitはコンソールに警告を記録します。チェックアウトする必要があります。代わりに、必要な向きに対してYESを返します。 –

1

私は同様の問題を抱えていましたが、SOの質問をして、それを考え出して答えました。あなたはそれをチェックしたいかもしれません。

私はこれを固定簡単な方法は、ナビゲーションコントローラにプッシュされ

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

すべてのビューコントローラがに表示されているようだ、私のルートビューコントローラのサブクラスUINavigationControllerを持っている、と景観ビューすなわちを処理するためにshouldAutorotateToInterfaceOrientationを実装することでした

+0

クレイのソリューションは私のためにうまくいった。 –

関連する問題