在iOS 7中,尽pipeUITabBarController被隐藏了,为什么UITableView的contentInset有底部值?
我不知道为什么UITableView自动底部插入,尽pipe我通过调用[setHidden:YES]
隐藏UITabBarController 。
具有UITableView的视图控制器是UITabBarController的子项。 我已经知道,根据它的容器视图控制器的状态,AdjustsScrollViewInsets可以帮助任何UIScrollView获得正确的“contentInset”。
所以,我期望如果UITabBar被隐藏, UITableView的底部contentInset将为0。 但是,不这样做。
虽然自动调整ScrollViewInsets是YES,当UITabBar被隐藏时,我应该手动调整该值吗?
标签栏从来没有被隐藏 – 毕竟为什么有一个UITabBarController如果你想隐藏标签栏。 在文档中,您将被警告不要直接修改标签栏对象:
你不应该试图操纵存储在这个属性中的UITabBar对象本身。
这正是你把它设置为隐藏的时候正在做的。
在iOS6中这已经工作,但现在在iOS7中,它不。 而且似乎很容易将其隐藏起来。 当你最终设法隐藏它,如果应用程序转到后台并返回,苹果的布局逻辑将覆盖你的更改。 有很多这样的触发器。
我的build议是改变你的devise。 也许以模态方式显示数据。
把这个放在这里是为了解决嵌套视图控制器的问题。
我的视图控制器包含层次结构是:
UINavigationController |--UIViewController |--UITabBarController |--UIViewController
最后一个视图控制器有一个UITableView
它的scrollIndicatorInsets
即使被隐藏,仍然被标签栏控制器的UITabBar
高度所抵消。
解决scheme:在包含标签栏控制器的视图控制器中(并且位于UINavigationController
) automaticallyAdjustsScrollViewInsets
设置为“调整false
视图集”为false
。 无需在标签栏控制器本身和UITableView
所在的第二个视图控制器中设置其他属性。