我有一个带有表格视图的设置视图控制器。表视图应该将其帧设置为视图控制器的帧。我的应用程序仅支持横向模式,因此这就是我一直在使用的方向。
但是,当设置视图控制器加载时,表视图具有视图控制器的纵向模式框架,即使它处于横向状态(360×480时应为480×360)。
此外,当我检查设备是否认为它处于纵向模式时,它返回true。
导致问题的原因是什么?如何解决?
答案 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];
}