8

私はいくつかのペン先を持つ iPhone アプリケーションを開発しており、横向きのみにする必要があります。

アプリケーションは、Info.plist ファイルを介してランドスケープ モードで起動するように設定されています。

と の 2 つのビュー コントローラーが FirstViewControllerありSecondViewControllerます。

これらのそれぞれについて、ビューが横向きのnibファイルがあります。どちらのビュー コントローラーもMainViewアウトレットとして nib に追加され、それらのビューは遅延初期化されます。

アプリケーションが読み込まれると、期待どおり、最初のビューが横向きで表示されます。ただし、2 番目のビューに切り替えると、デバイス (またはシミュレーター) は横向きのままですが、デバイスが縦向きモードであるかのようにビューが回転し、インターフェイスが壊れます。

両方のUIViewControllerクラスに次のコードがあります。

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

ビューを切り替えるには、アプリのデリゲートで次のことを行っています。

[viewController.view removeFromSuperview];
[window addSubview:secondViewController.view];

ここでviewControllersecondViewControllerは、View Controller が接続されている 2 つのアウトレットです。

これは、IB で 2 番目のビューがどのように見えるかです: 代替テキスト http://img27.imageshack.us/img27/4898/picture1ni.png

これはシミュレーターでどのように見えるかです: 代替テキスト http://img402.imageshack.us/img402/4866/picture2wt.png

2 番目のビューが横向きに表示されているのに、インターフェイスが回転しているのはなぜですか?

変換プロパティを扱いたくないのは、やり過ぎに思えるからです。

4

2 に答える 2

0

これは単なる提案ですが、2 番目のビューの shouldAotorotate メソッドで NO を返すことを試みることができます。または、IB でポートレート ビューで作成してみてください。ビューが (ランドスケープ モードで) 正しく読み込まれたようですが、shouldAutorotate メッセージを受け取り、90 度回転していたようです。

于 2009-12-12T08:50:25.970 に答える