当你在UIViewController中有一个UITableView时,你必须关闭automaticAdjustsScrollViewInsets标志(在代码或故事板编辑器中)以获得顶部空间以避开顶部栏。我现在有一个子UIViewController使用包含UITableView的子视图内的“嵌入”seque。我正在看“空间”(黄色区域)但我清除了嵌入式UIViewController中的所有标志,甚至在prepareForSeque中手动清除了标志,但空间仍然存在。是否有其他事情要做,或者这是一个错误?
答案 0 :(得分:6)
今天早上有这个问题。
事实证明,当你使用嵌入式视图控制器模式时,你需要从 parentViewController 取消选中 automaticAdjustsScrollViewInsets 属性。
这是我的UI结构:
ParentViewController 有一个容器视图,指向 ChildViewController ( UITableViewController的子类)。
取消选中 ChildViewController 中的selfAdjustsScrollViewInsets:不起作用
取消选中 ParentViewController 中的automaticAdjustsScrollViewInsets:工作!
答案 1 :(得分:1)
我一直在努力解决这个问题几个小时,直到我意识到@ user3188985的答案是正在发生的事情,尽管解决方案对我不起作用。
这是因为我有两个包含视图控制器,每个控制器都包含scrollViews,我想要一个调整,一个不调整,该做什么?
如果你在父控制器中关闭自动调整,那么你必须手动调整你需要的一个scrollView,例如在适当的情况下设置contentInset。
如果您在父级中保留自动调整,我发现虚拟scrollView,其中零帧,隐藏,所有滚动属性设置为NO,如果它位于子视图控制器中的可见/启用scrollView之前查看层次结构,然后它将接收自动调整,并单独保留可见的scrollView视图。
或者,你可以让你所包含的视图控制器的最顶层视图是一个滚动禁用滚动视图,并让它包含另一个启用了滚动的scrollView,这将实现与" dummy& #34;方法
您可以在此处看到,仅考虑父视图控制器的自动调整标志,但是遍历它自己的视图控制器层次结构以查找要在每个包含的控制器中调整的scrollView。这只是不受欢迎的UIKit行为。在决定弄乱它之前,检查每个子控制器的自动调整设置会很好:/