我在UITabBarController内部使用UINavigationController进行了非常基本的设置。我想以编程方式布局该navcontroller的rootViewController的视图,但是当我查看viewDidLoad内的self.view.frame时,我得到了这一点(例如,在landscape中):
1. view frame: {{20, 0}, {748, 1024}} // looks like an odd portrait mode
然后我自动旋转到Portrait,我得到了:
2. view frame: {{0, 0}, {768, 911}}
然后,当我回到风景时,框架现在是这样的:
3. view frame: {{0, 0}, {1024, 655}}
进一步的自转事件将在帧值#2和#3之间翻转。
为了避免#1的怪异,我目前正在viewDidLoad中执行此操作:
if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) {
self.view.frame = CGRectMake(0, 0, 768, 911);
} else {
self.view.frame = CGRectMake(0, 0, 1024, 655);
}
我觉得我显然在这里缺少什么。当视图的默认框架自动旋转回相同方向时,为什么它与该框架不匹配?视框是否未设置为初始方向?很迷茫...
我应该提到的是,以上所有内容(包括我的糊涂技巧)都无法在视觉上进行任何更改。我受到黑客攻击的原因是,当我将子视图布局到该视图中时,它们将基于我期望的位置,即导航栏下方的左上角。
我究竟做错了什么?
更新:关闭视图上的所有自动调整大小的东西会将结果#1更改为:
view frame: {{0, 0}, {748, 1024}}
这似乎有点接近,但仍无法与#3相匹配。
MYYA
凤凰求蛊
相关分类