如何为基于UISplitViewCntroller的iPad应用程序设置初始方向

时间:2010-04-21 22:22:51

标签: cocoa-touch ipad ios-simulator

我在iPad上运行的分割视图应用程序正常运行。它使用默认设置(纵向中为Popover,横向左侧为表格视图)。应用程序运行后,视图会正确移动。我看到的问题是,当应用程序启动(在模拟器中)以横向模式运行时,UI范例是用于纵向模式(主列表是弹出窗口)的内容是加载的。

我认为这对模拟器来说有点奇怪,或者我在主视图控制器上缺少一个选项。

4 个答案:

答案 0 :(得分:2)

我遇到了与此处描述的问题相同的问题。令人尴尬的是,解决方案就像在将视图添加到窗口之前手动设置视图的框架一样简单。

只需检查界面方向,如果是横向,请切换应用程序框架的宽度和高度尺寸(即宽度变为高度,高度变为宽度)。

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;
}

答案 1 :(得分:0)

添加此作为答案,希望对需要相同修复的人更明显。

我解决了这个问题。我正在等待加载外部XML流&解析。因此,我在applicationDidFinishLaunching方法之后使用splitViewController视图加载窗口。

添加:

[window addSubview: splitViewController.view]; 
[window makeKeyAndVisible]; 

回到该方法修复了方向识别

答案 2 :(得分:0)

我成功地通过

显示加载视图
[window addSubview:self._splitViewController.view];
[window addSubview:self._myLoadingView];
self._splitViewController.view.hidden = YES;
[window makeKeyAndVisible];
[self loadAllDatas];
self._splitViewController.view.hidden = NO;

我工作正常

答案 3 :(得分:0)

它无法正常工作,因为UISplitViewController的默认详细视图控制器只是一个简单的UIViewController。 UIViewController的shouldRotate方法仅为纵向模式返回YES。

添加一个通用的UIViewController,在所有方向的shouldRotate中返回YES,为我解决了这个问题。