Ios iPad应用程序横向启动具有纵向尺寸的根视图控制器

Ios iPad应用程序横向启动具有纵向尺寸的根视图控制器,ios,ipad,uiinterfaceorientation,Ios,Ipad,Uiinterfaceorientation,我已经设置了一个新的iPad项目,只支持UIInterfaceOrientation和ScapeRight 在我的应用程序委托中,我向窗口的RootViewController添加了一个RootViewController 在这个UIViewController(RootViewController)中,我有以下内容: - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientati

我已经设置了一个新的iPad项目,只支持UIInterfaceOrientation和ScapeRight

在我的应用程序委托中,我向窗口的RootViewController添加了一个RootViewController

在这个UIViewController(RootViewController)中,我有以下内容:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
我也尝试过:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}
但是,当我根据视图控制器视图的尺寸创建和添加子视图时,我无法获得应用程序的正确尺寸

如果我为我的视图控制器输出self.view.frame,我会得到
{0,0},{768,1024}
,但我想要的是{1024,768}。如果我不能,那么什么时候尺寸是正确的,这样我就可以在脑海中创建视图了

很抱歉,如果这个问题被问了10亿次,我已经浏览了很多这样的问题,但是没有任何问题解决。

EDIT: 看起来界面方向已在
viewDidLoad

p (UIInterfaceOrientation)[self interfaceOrientation]
(UIInterfaceOrientation) $1 = UIInterfaceOrientationLandscapeRight
我的理论是:iPad上的界面默认为1024x768,如果有状态栏的话,你的也有。我相信,即使界面方向正确,它也不会在
viewDidLoad
之后更新视图几何体。我相信这有很好的理由

如果查看文档,则在设置视图控制器时会调用
viewDidLoad
。加载视图后,将调用
WillAnimateRotationInterfaceOrientation:duration:
,让视图控制器知道其几何图形正在更改

与其说是答案,不如说是解释。希望这将帮助您设计一个解决方案来解决这个问题

开始回答实际上不起作用的问题: 在项目的
info.plist
中,打开“支持的界面方向”选项并删除不希望支持的界面方向。默认情况下,支持以下所有选项:


我有一个简单的解决方案:苹果默认的应用程序模板与主视图控制器的XIBs一起工作。要解决您的问题,只需打开主viewcontroller XIB并将方向设置为“横向”


因为我通常不使用XIB,而是以编程方式创建所有UI元素。这就是为什么我在以前的项目中遇到同样的问题,这真的让我发疯。然后我通过硬编码帧宽度和高度值来解决这个问题——这不是一个好方法

我遇到了同样的问题,上面灰沟所说的似乎是正确的;在调用
viewDidLoad
后设置方向

我正在创建一个可以在所有方向上运行的iPad应用程序,但在我的根UIViewController中只有纵向方向设置正确。为了使视图在横向视图中正确布局,我必须确保所有子视图上的自动调整大小遮罩都设置为允许视图在显示给用户之前调整到后台的横向视图

例如,我有一个与UIViewController的UIView大小相同的UIImageView。为了使其在横向旋转时能够正确调整:

UIImageView *backgroundImageView = [[UIImageView alloc] initWithFrame:self.view.bounds];    
backgroundImageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight);
[self.view addSubview:backgroundImageView];

现在,UIViewController可以在
viewDidLoad
方法中以纵向方向配置,并在显示给用户之前按照纵向方向进行良好旋转。

您正在将
RootViewController
实例设置为
窗口。RootViewController
,对吗?不是一个
UITabBarController
或任何包装它的东西,对吗?