我有一个非常基本的设置,在UITabBarController中有一个UINavigationController.我想以编程方式布局该navcontroller的rootViewController视图,但是当我查看viewDidLoad中的self.view.frame时,我得到了这个(例如,在横向中):
1. view frame: {{20, 0}, {748, 1024}} // looks like an odd portrait mode
Run Code Online (Sandbox Code Playgroud)
然后我自动旋转到肖像,我得到了这个:
2. view frame: {{0, 0}, {768, 911}}
Run Code Online (Sandbox Code Playgroud)
然后,当我回到Landscape时,框架现在是这样的:
3. view frame: {{0, 0}, {1024, 655}}
Run Code Online (Sandbox Code Playgroud)
并且进一步的自转事件将在帧值#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);
}
Run Code Online (Sandbox Code Playgroud)
我觉得我在这里显然缺少一些东西.为什么视图的默认框架在自动旋转回相同方向时与框架不匹配?视图框架是否未设置为初始方向?非常困惑...
我应该提一下,上述所有内容,包括我的kludgy hack,都没有在视觉上改变任何东西.我有黑客的原因是,当我将我的子视图布局到这个视图中时,它们将基于我期望它们的位置,即导航栏下方的左上角.
我究竟做错了什么?
更新:关闭视图更改结果#1的所有自动调整内容:
view frame: {{0, 0}, {748, 1024}}
Run Code Online (Sandbox Code Playgroud)
这似乎有点接近,但仍然不匹配#3.
我有一个自定义tableViewController,我将其添加到TabBarController中
self.tabBarController.viewControllers = [NSArray arrayWithObjects:someOtherViewController, customTableViewController, nil];
self.tabBarController.selectedIndex = 1;
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,运行iOS7的iPhone 4屏幕底部的标签栏覆盖了最后1.5个tableViewCells.当我使用iOS模拟器 - iPhone Retina(4英寸)/ iOS 7.0时,问题仍然存在.
如何使tableView与屏幕底部的tabBar顶部对齐,而不使用"魔术数字"?
我有一个问题,当我在TabBar上设置半透明盒子时,有些东西阻挡了我的一些视图.
它看起来像是一种额外的标签栏,或者我甚至都不知道.我正在使用故事板.
请看附图:
半透明(OFF - NO):

使用半透明(ON或YES):

有人知道它为什么会这样吗?
谢谢
PS:你喜欢哪个tabBar?黑色还是这个:

ios7 ×2
iphone ×2
objective-c ×2
frame ×1
ipad ×1
uitabbar ×1
uitableview ×1
uiview ×1
viewdidload ×1