在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:在包含标签栏控制器的视图控制器中(并且位于UINavigationControllerautomaticallyAdjustsScrollViewInsets设置为“调整false视图集”为false 。 无需在标签栏控制器本身和UITableView所在的第二个视图控制器中设置其他属性。