我有一个在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