视图控制器处于横向模式,但我从纵向模式获取帧?

时间:2011-10-03 04:41:45

标签: objective-c tableview viewcontroller uiinterfaceorientation

我有一个带有表格视图的设置视图控制器。表视图应该将其帧设置为视图控制器的帧。我的应用程序仅支持横向模式,因此这就是我一直在使用的方向。

但是,当设置视图控制器加载时,表视图具有视图控制器的纵向模式框架,即使它处于横向状态(360×480时应为480×360)。

此外,当我检查设备是否认为它处于纵向模式时,它返回true。

导致问题的原因是什么?如何解决?

3 个答案:

答案 0 :(得分:4)

当您致电[UIView init]时,它将默认为您的设备在纵向模式下的屏幕尺寸(适用于iPad,但尺寸较大)。 在[UIViewController viewDidLoad]内,self.view也会默认为此大小。

屏幕旋转仅对层次结构中的顶视图(控制器)进行,旋转消息通过支持此行为的容器VC转发(例如UINavigationController,UITabBarController)。

如果您希望正确调整视图大小,请使用[UIView initWithFrame:self.view.bounds]创建视图。 Insinde UIViewController您只有机会覆盖loadView方法以在调用viewDidLoad之前设置帧(或者您可以使用不同的XIB用于格局)。您还可以通过在viewDidLoad

中首先设置其框架来硬编码视图的大小

答案 1 :(得分:0)

您可以使用viewWillAppear在显示

之前调整视图大小

答案 2 :(得分:-2)

您必须在设置视图控制器中实现此功能: -

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];
    }