iPad横向高度/宽度问题

iPad横向高度/宽度问题,ipad,uiviewcontroller,uiinterfaceorientation,Ipad,Uiviewcontroller,Uiinterfaceorientation,我有一个iPad应用程序,只能在UIInterfaceOrientation和ScapeLeft中运行。我已经在plist中设置了这一点,但是所有UIViewController仍然分配有一个纵向框架,直到它们完成启动。因此,我基于视图控制器的帧在-init中设置的任何子视图都是错误的 我有输出self.view.frame,它是0,0,768,1024,而它应该是0,0,1024,768,我还将我的视图控制器设置为仅返回左视图: - (BOOL)shouldAutorotateToInterf

我有一个iPad应用程序,只能在UIInterfaceOrientation和ScapeLeft中运行。我已经在plist中设置了这一点,但是所有UIViewController仍然分配有一个纵向框架,直到它们完成启动。因此,我基于视图控制器的帧在-init中设置的任何子视图都是错误的

我有输出self.view.frame,它是
0,0,768,1024
,而它应该是
0,0,1024,768
,我还将我的视图控制器设置为仅返回左视图:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

与其在-init中设置子视图,不如在-loadView(如果不使用xib)或-viewDidLoad(如果使用xib)中设置它们。调用这些方法时,UIViewController应处于正确的状态,并按您希望的方式工作。

不要在-init中设置子视图,而是在-loadView(如果您不使用xib)或-viewDidLoad(如果您使用xib)中设置它们。当这些方法被调用时,你的UIViewController应该处于正确的状态,并按照你的意愿工作。

作为一个补充说明,苹果很少会批准iPad上具有如此严格方向的东西。提供两种景观方向会给你一个更好的被批准的机会。嗨,肯尼,是的,我意识到这一点。这是我为一个零售商店里有iPad的客户开发的应用程序,这意味着只需要一个方向。它不会通过App Store分发。嗨,你解决过这个问题吗?@jonydep不,看起来视图的框架在viewDidLoad之后没有最终设置好,并且没有给出正确的方向。顺便说一句,苹果很少会批准iPad上有这样一组方向限制的东西。提供两种景观方向会给你一个更好的被批准的机会。嗨,肯尼,是的,我意识到这一点。这是我为一个零售商店里有iPad的客户开发的应用程序,这意味着只需要一个方向。它不会通过应用商店分发。您好,您解决过这个问题吗?@jonydep否,看起来视图的框架在viewDidLoad之后没有最终设置并给出正确的方向。我尝试过这个方法,但同样的问题:(super loadView之后的调用者)NSLog(@“%@”,NSStringFromCGRect(self.view.frame));输出:{0,0},{768,1024}在rootViewController(window.rootViewController)上,self.view.bounds在rootViewController的坐标系中返回正确的大小。view.frame位于UIWindow的坐标系中,该坐标系不随设备旋转。我尝试过此操作,但问题相同:(超级loadView后的调用者)NSLog(@“%@”,NSStringFromCGRect(self.view.frame));输出:{0,0},{768,1024}在rootViewController(window.rootViewController)上,self.view.bounds在rootViewController的坐标系中返回正确的大小。view.frame位于UIWindow的坐标系中,该坐标系不随设备旋转。