为啥iOS7中的bottomLayoutGuide和automaticAdjustsScrollViewInsets没有考虑UIToolBar的高度(带有自动布局)

Posted

技术标签:

【中文标题】为啥iOS7中的bottomLayoutGuide和automaticAdjustsScrollViewInsets没有考虑UIToolBar的高度(带有自动布局)【英文标题】:Why is a UIToolBar's height not being taken into account by bottomLayoutGuide and automaticallyAdjustsScrollViewInsets in iOS7 (with autolayout)为什么iOS7中的bottomLayoutGuide和automaticAdjustsScrollViewInsets没有考虑UIToolBar的高度(带有自动布局) 【发布时间】:2014-03-25 11:36:03 【问题描述】:

我没有找到任何关于这个的东西,可能没有简单的解决方案。

我有一个滚动视图(在本例中为 UITableView),它是我的 UIViewController 视图(它本身不是滚动视图)的第一个子视图。这个视图控制器位于 UINavigationController 中,我还添加了一个 UIToolBar 作为视图控制器视图的第二个子视图。表格视图和工具栏都使用自动布局在视图控制器的视图中定位和调整大小(表格视图填充视图,工具栏固定到视图控制器的 bottomLayoutGuide)。 p>

据我了解,导航栏和工具栏(固定在视图底部)应该会影响视图控制器的 topLayoutGuidebottomLayoutGuide,因此影响包含的滚动视图的 contentInset

正在考虑导航栏(由 topLayoutGuideautomaticallyAdjustsScrollViewInsets),以便我的表格视图内容在其下方滚动,但在其下方可见,但我的UIToolBar 不是 - bottomLayoutGuideautomaticallyAdjustsScrollViewInsets。即使我用框架放置工具栏(不使用约束),这种行为也是一样的。

我认为布局指南应该考虑固定到视图控制器视图底部的 UIToolBar 是否正确?如果是这样,有人知道为什么不这样吗?

如果没有,是否有任何地方(amy 方法)可以手动将收费栏框架添加到 bottomLayoutGuide 以便它由 automaticallyAdjustsScrollViewInsets 自动传播?如果没有,最好用什么方法手动设置表格视图的内容插入?

【问题讨论】:

这是你添加的还是导航栏提供的? 这是不久前...,但这是独立于导航栏添加的单独 UIToolbar。 【参考方案1】:

如果您自己添加一个,它只是一个子视图,不会影响布局指南。通过设置UINavigationBar .toobarHidden = false 属性使用内置的UIToolbar。然后设置UIViewController.toolbarItems = ...

此工具栏将成为您的底部布局指南

【讨论】:

显然我已经从这个开始了,但我认为这是正确的解释 - 谢谢。

以上是关于为啥iOS7中的bottomLayoutGuide和automaticAdjustsScrollViewInsets没有考虑UIToolBar的高度(带有自动布局)的主要内容,如果未能解决你的问题,请参考以下文章

为啥 iOS7 中的 UIAlertController 收到 nil 值?

_UILayoutGuide bottomLayoutGuide 长度为零

iOS开发-LayoutGuide(从top/bottom LayoutGuide到Safe Area)

底部有视图的自定义视图控制器的布局指南(bottomLayoutGuide?)

是否可以在 UIViewController 的子类中实现 topLayoutGuide 和 bottomLayoutGuide?

Safe Area Layout Guide