我正在開發基於xib的僅用於橫向的應用。該應用程序正確啓動。但是,我的主ViewController中的視圖以縱向呈現。也就是說,它被旋轉了90度,這樣圖像就會出現裁剪,並且不會佔用整個屏幕。如果我使用我的界面來呈現模式視圖控制器,然後返回到主ViewController,則問題會自行更正(視圖以橫向顯示)。這個問題在Xcode 4.2下沒有發生。它在升級到Xcode 4.3之後發生,當升級項目設置時,唯一修改的代碼是由Xcode自動實現的。UIWindow的根視圖控制器不會在應用啓動時旋轉到橫向
根據其他帖子的建議,我驗證了我的Info.plist設置支持的界面方向和初始界面方向。我忽略了我的每個視圖控制器的shouldAutorotateToInterfaceOrientation方法返回YES僅適用於橫向方向。此外,我關閉了視圖的自動調整大小,因爲我不希望視圖的大小/方向發生改變。
基於此鏈接中的想法[1],我懷疑問題是視圖在啓動時沒有接收到改變方向的調用,可能是由於刪除了MainWindow.xib概念,這似乎是由以下的Xcode插入代碼中AppDelegate.m取代:
- (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;
}
瞧!這解決了我的問題。然而,對我而言,這感覺就像是基本層面的變化,在我的發展過程中,我不想在這一點上做出改變。我打算成爲我的根視圖控制器現在是一種模態視圖。有沒有人有這個問題的另一個解決方案?
在此先感謝!