iOS 8 xib + AutoLayout 无法为 tableViewHeaderView 正常工作

Posted

技术标签:

【中文标题】iOS 8 xib + AutoLayout 无法为 tableViewHeaderView 正常工作【英文标题】:iOS 8 xib + AutoLayout not working correctly for tableViewHeaderView 【发布时间】:2015-04-23 13:43:22 【问题描述】:

我有一个带有 UIView 的 xib 文件,我想将它用作 tableViewHeaderView。该视图有一个带有一堆文本的标签。无论我尝试什么,我都无法对其进行调整,因此高度可以根据约束正确匹配。

这是笔尖:

标签设置为调整其高度以适合文本,并且所有边距距离超级视图 15 点。然而,当它被添加到表格视图时,它看起来像这样:

我似乎无法弄清楚我缺少什么,here is the sample project,您是否应该通过某种方式设置 nib 以允许根据其内容约束调整视图的大小?

编辑:我试过这里给出的答案没有运气:https://***.com/a/21099430/383603

编辑 2:它应该如下所示:

【问题讨论】:

【参考方案1】:

看起来对于 tableViewHeaderView 视图,实际高度取自 xib 文件,在您的情况下为 570。如果这是真的,自动布局系统应该得到一个明确的状态:

垂直拥抱优先级是1000,这是最高的,为了得到那个 工作 它需要打破 15 顶部或 15 底部的约束 或动态调整标题的大小

根据图片的外观,运行时系统很可能决定打破垂直拥抱优先级以保持其他一切有效

可能的解决方案可能是:

动态更改标题的高度 更改(降低)顶部和/或底部约束的优先级

【讨论】:

以上是关于iOS 8 xib + AutoLayout 无法为 tableViewHeaderView 正常工作的主要内容,如果未能解决你的问题,请参考以下文章

iOS 在xib或者storyboard中添加AutoLayout后,在代码中修改AutoLayout约束条件

iOS 8 AutoLayout 改变视图的位置

XIB——AutoLayout添加约束

转使用Autolayout xib实现动态高度的TableViewCell

带有约束的 iOS 6.0 AutoLayout 问题:旋转时子视图消失

如何借助 AutoLayout 在自定义 UITableviewCell 中添加自定义 UIView(xib)?