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

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

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

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

是什么导致了这个问题,我该如何解决?

最佳答案 当你调用[UIView init]时,它将默认为你的设备在纵向模式下的屏幕尺寸(同样适用于iPad,但尺寸更大).

在[UIViewController viewDidLoad]内部,self.view也将默认为此大小.

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

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

点赞