动态 UITableView 标头(不是节标头)自动布局问题

Posted

技术标签:

【中文标题】动态 UITableView 标头(不是节标头)自动布局问题【英文标题】:Dynamic UITableView header (not section header) auto layout problems 【发布时间】:2015-09-02 14:41:38 【问题描述】:

我需要将 tableViewHeader 添加到 UITableView,其中包含两个标签,并且所有内容都需要使用自动布局动态调整大小。所以,我在 XIB 中创建了一个标题视图,用systemLayoutSizeFittingSize: 测量它并将视图设置为 tableViewHeader。结果如下所示:

如您所见,带有作者姓名(“Brian Mancini”)的标签在文本上方和下方都有额外的空间。我怎样才能摆脱它?

-更新-

这里是演示项目:link,这里是 Interface Builder 视图约束的屏幕截图:

【问题讨论】:

你能在你的 .xib 文件中分享你的约束吗? 【参考方案1】:

最近我在我的项目中修复了与表头视图自动布局相同的问题。您最好提供有关您当前 IB 配置的更多信息,以便我可以尝试更有效地提供帮助,但下面让我尝试将我的解决方案转换为您的项目上下文,看看它是否有帮助:

    将 2 个标签放在一个容器中 (UIView) 配置必要的约束以实现您想要的布局(只需执行与之前设置标签到最顶部视图之间的约束相同的操作) 在容器和最顶层视图之间配置必要的边距

这样做,不再需要计算表头视图高度。让自动布局为您完成这项工作!

它应该是这样的(黄色框是添加的容器视图,其他一切都保持不变)

还要注意,在将自定义视图分配给表头视图之后,你应该调用layoutIfNeeded,否则它不知道在哪里调整;)

请查找修复版HERE

编码愉快!

【讨论】:

抱歉耽搁了——我已经用更多信息更新了这个问题。 谢谢,稍后我会检查源代码!标记答案。

以上是关于动态 UITableView 标头(不是节标头)自动布局问题的主要内容,如果未能解决你的问题,请参考以下文章

位于顶部的 UITableView 标头

iOS - 在用作 UITableView 标头的 ViewController 上设置网点

如何制作可扩展的 UITableView 标头?

将 xib 文件作为 UITableViewController 中的标头添加到 UITableView

如何以编程方式设置 UITableView 标头的约束以支持 RTL 和 LTR?

调用 reloadData 后防止标头更新?