2010-12-14 8 views
0

私は開発中のiPadアプリケーションで興味深い問題があります。iPadレイアウトは起動時のみ異なる

アプリをポートレートモードで起動すると、レイアウトは正常に動作します。私はiPadを回転させ、ローテーションはうまく動作します。

アプリケーションがランドスケープモードで起動すると、追加の空白が表示され、レイアウトが期待通りに機能しません。しかし、私は肖像画にアプリケーションを回転すると、それはちょうど良い回転します。私はそれを景色に戻すと、それはうまくいきます。

この問題の原因は何ですか?問題のビューコントローラは、UINavigationController(ヘッダに追加する必要があります)を含むビューコントローラです。私はそれがUINavigationControllerで何かであるのだろうかと思います。

答えて

0

はので、私のアプリケーションで変だったものを、タブコントローラは、ファンキーされていたビューに戻ってタブを切り替えたときにレイアウトが正しいになるだろうということです。そこで、メインウィンドウのmakeKeyAndVisibleの前にタブを切り替えるためにハックを追加しました。

私はあなたの提案WrightsCSを試しました。実際にはうまくいかなかったのは、UINavigationControllerのビューをページのサブビューで読み込んでいるためです。そのため、レイアウトのコントロールが実際にはうまくいきませんでした。ナビゲーションコントローラの一番上のバーは、されていたはずのものより少し下がっていました。

0

起動時にビューにポートレートモードが必要です。ビューコントローラでは、方向を調べ、対応するビューをロードするように通知する必要があります。 [OK]を

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    if(((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
     (interfaceOrientation == UIInterfaceOrientationLandscapeRight))){ 

     self.view = landscape; 

    }else if(((interfaceOrientation == UIInterfaceOrientationPortrait) || 
       (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown))){ 

     self.view = portrait; 
    } 

    return YES; 
} 
+0

1つのViewControllerとビューのみです。私は風景と肖像画を切り替えるときに別のビューをロードしていません。 – Min

+0

次に、ロード時に向きを確認し、それに応じてオブジェクトフレームを調整する必要があります。より簡単な方法は、1つのコントローラに2つのビュー(IBで設定)を持たせることです。 1つの風景は風景と呼ばれ、もう1つは肖像画と呼ばれ、私の答えに加えたコードを使用します。いくつかのプロジェクトで私の魅力のように働いています。 – WrightsCS

+0

私はこれを撃つでしょう。 – Min