xibベースのランドスケープオンリーアプリケーションを開発中です。アプリはランドスケープで正しく起動します。しかし、私の主なViewControllerのビューは肖像画で表示されます。つまり、画像が切り取られて見え、画面全体を占めないように90度回転します。私のインターフェイスを使用してモーダルビューコントローラを表示してから、メインのViewControllerに戻すと、問題が解決します(ビューは横長で表示されます)。この問題は、Xcode 4.2では発生しませんでした。これはXcode 4.3にアップグレードした後に発生し、プロジェクトの設定をアップグレードしたときにXcodeによってコード変更が自動的に実装されました。UIWindowのルートビューコントローラがアプリの起動時にランドスケープに回転しない
他の投稿の助言に基づいて、サポートされているインターフェイス指向と初期インターフェイス指向のInfo.plist設定を確認しました。各ビューコントローラのshouldAutorotateToInterfaceOrientationメソッドをオーバーライドして、横向きの向きのみを返すようにしました。また、ビューのサイズや向きを変更したくないので、ビューの自動サイズ変更を無効にしました。
このリンク[1]のアイデアに基づいて、起動時にビューが向きを変えるような呼び出しを受け取っていないことが問題であると思われました。おそらくMainWindow.xibのコンセプトが削除されているようですAppDelegate.mで次のXcode挿入コードで置き換え:私は私のViewControllerクラスが提示された一般的なルート・ビュー・コントローラを生成するために、この方法を改変
- (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;
}
、以下のコードのように:
- (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;
}
Voila!これは私の問題を解決しました。しかし、私にとっては、基本的なレベルでの変化のように感じます。私はこの段階では開発したくはありません。私が自分のルートビューコントローラにしようとしていたのはモーダルビューです。誰にもこの問題の別の解決策がありますか?
ありがとうございます!