xib ベースのランドスケープのみのアプリを開発しています。アプリは横向きで正しく起動します。ただし、メインの ViewController のビューは縦向きに表示されます。つまり、画像がトリミングされて画面全体を占有しないように 90 度回転されます。インターフェイスを使用してモーダル ビュー コントローラーを表示し、メインの ViewController に戻ると、問題は自動的に修正されます (ビューは横向きで表示されます)。この問題は、Xcode 4.2 では発生しませんでした。Xcode 4.3 にアップグレードした後に発生し、プロジェクト設定をアップグレードしたときに、行われたコード変更のみが Xcode によって自動的に実装されました。
他の投稿のアドバイスに基づいて、サポートされているインターフェイスの向きと初期インターフェイスの向きの Info.plist 設定を確認しました。各ビュー コントローラーの shouldAutorotateToInterfaceOrientation メソッドをオーバーライドして、横向きの場合にのみ YES を返すようにしました。また、ビューのサイズ/向きを変更したくないので、ビューの自動サイズ変更をオフにしました。
このリンク [1] のアイデアに基づいて、おそらく MainWindow.xib の概念が削除されたため、ビューが起動時に向きを変更する呼び出しを受信していないことが問題ではないかと考えました。これは次のように置き換えられているようですAppDelegate.m に Xcode で挿入されたコード:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
以下のコードに示すように、このメソッドを変更して、ViewController クラスが表示される汎用ルート ビュー コントローラーを生成しました。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
ViewController* myViewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.viewController = [[UIViewController alloc] init];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
[self.viewController presentModalViewController:myViewController animated:NO];
return YES;
}
出来上がり!これで私の問題は解決しました。しかし、私には根本的なレベルでの変更のように感じます。これは、開発のこの時点では行いたくありません。ルート ビュー コントローラーにするつもりだったものが、モーダル ビューになりました。この問題に対する別の解決策はありますか?
前もって感謝します!