动态 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 标头(不是节标头)自动布局问题的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 在用作 UITableView 标头的 ViewController 上设置网点
将 xib 文件作为 UITableViewController 中的标头添加到 UITableView