我不知道为什么 UITableView 会自动触底,尽管我之前通过调用[setHidden:YES]
隐藏了 UITabBarController 。
拥有 UITableView 的视图控制器是 UITabBarController 的子级。我已经知道 automaticAdjustsScrollViewInsets 可以帮助任何 UIScrollView 获取正确的'contentInset',具体取决于它的容器视图控制器的状态。
所以,如果 UITabBar 被隐藏,我预计 UITableView 的底部contentInset将为0。但是,不这样做。
虽然 automaticAdjustsScrollViewInsets 为YES,但是当隐藏 UITabBar 时,我应该手动调整该值吗?
答案 0 :(得分:0)
标签栏从来没有被隐藏 - 毕竟为什么要有一个UITabBarController,如果你想隐藏标签栏。在文档中,警告您不要直接修改选项卡栏对象:
您永远不应该尝试操纵UITabBar对象本身 存储在此属性中。
这正是您在将其设置为隐藏时所做的工作。
在iOS6中,这已经奏效了,但现在在iOS7中却没有。并且它似乎很容易隐藏它。当你最终设法隐藏它时,如果应用程序进入后台并返回,Apple的布局逻辑将覆盖您的更改。有很多这样的诱因。
我的建议是改变你的设计。也许以模态方式显示数据。
答案 1 :(得分:0)
将此文件放在任何为嵌套视图控制器出现此问题的人处。
我的视图控制器包含层次结构是:
UINavigationController
|--UIViewController
|--UITabBarController
|--UIViewController
最后一个视图控制器有一个UITableView
scrollIndicatorInsets
被标签栏控制器的UITabBar
高度保持偏移,即使它被隐藏
解决方案:在包含标签栏控制器的视图控制器中将automaticallyAdjustsScrollViewInsets
设置为false
(位于UINavigationController
内)。无需在选项卡栏控制器本身和UITableView
所在的第二个视图控制器中设置其他属性。