我有一個在iPad上正常運行的拆分視圖應用程序。它使用默認設置(人像中的Popover,風景中左邊的表格視圖)。一旦應用程序運行,視圖就會正確移位。我看到的問題是,當應用程序啓動(在仿真器中)以橫向模式運行時,UI範例是用於縱向模式(主列表是彈出窗口)的應用程序是什麼加載的。如何設置基於UISplitViewCOntroller的iPad應用程序的初始定位
我在想這是模擬器的一些奇怪,或者我在主視圖控制器上缺少一個選項。
我有一個在iPad上正常運行的拆分視圖應用程序。它使用默認設置(人像中的Popover,風景中左邊的表格視圖)。一旦應用程序運行,視圖就會正確移位。我看到的問題是,當應用程序啓動(在仿真器中)以橫向模式運行時,UI範例是用於縱向模式(主列表是彈出窗口)的應用程序是什麼加載的。如何設置基於UISplitViewCOntroller的iPad應用程序的初始定位
我在想這是模擬器的一些奇怪,或者我在主視圖控制器上缺少一個選項。
此外,作爲回答,希望對於需要相同修復的人員更加明顯。
我解決了這個問題。我正在等待一個外部XML流被解析。因此,我使用我的applicationDidFinishLaunching
方法加載了帶有splitViewController視圖的窗口。
添加:
[window addSubview: splitViewController.view];
[window makeKeyAndVisible];
回該方法固定方向識別
我遇到了同樣的問題,因爲這裏描述。令人尷尬的是,解決方案與在將視圖添加到窗口之前手動設置視圖的框架一樣簡單。
只需檢查界面的方向,如果是風景,則切換應用程序框架的寬度和高度尺寸(即寬度變爲高度,高度變爲寬度)。
CGRect frame = [[UIScreen mainScreen] applicationFrame];
switch(controller.interfaceOrientation){
case UIInterfaceOrientationPortrait:
case UIInterfaceOrientationPortraitUpsideDown:
[controller.view setFrame:frame];
break;
case UIInterfaceOrientationLandscapeLeft:
case UIInterfaceOrientationLandscapeRight:
[controller.view setFrame:CGRectMake(frame.origin.x, frame.origin.y, frame.size.height, frame.size.width)];
break;
}
我成功進入顯示加載視圖做
[window addSubview:self._splitViewController.view];
[window addSubview:self._myLoadingView];
self._splitViewController.view.hidden = YES;
[window makeKeyAndVisible];
[self loadAllDatas];
self._splitViewController.view.hidden = NO;
我工作得很好
如果您的視圖不是加載的SplitViewController的一部分,是否適合您?部分問題是我想要顯示「加載」視圖。當我這樣做時,它會把所有東西都扔掉,包括方向支持按照上述方式進行操作。 – MystikSpiral 2010-07-08 11:57:26
它不能正常工作,因爲UISplitViewController的默認詳細視圖控制器是隻是一個普通的UIViewController。 UIViewController的shouldRotate方法僅爲縱向模式返回YES。
在shouldRotate中添加一個通用的UIViewController,在所有方向上返回YES解決了我的問題。
我不認爲這讓開發者感到尷尬;這是SDK中的一個缺陷。這一步不應該被要求。如果你沒有在你的應用程序中使用分割視圖控制器,你不必採取這一步驟。 – MystikSpiral 2010-06-22 12:07:39
+1很有幫助 – Jomoos 2012-08-01 06:26:16