iOS 8中的新增功能,您只需设置估计的行高,然后使用“自动布局”在单元格中布局元素,就可以获得100%的动态表格视图单元格。如果内容的高度增加,则单元格的高度也会增加。这非常有用,并且想知道表视图中的节标题是否可以实现相同的功能?
例如,可以在UIView
中创建一个tableView:viewForHeaderInSection:
,添加一个UILabel
子视图,根据视图为标签指定自动布局约束,并使视图的高度增加以适合标签的内容,而无需必须实施tableView:heightForHeaderInSection:
?
viewForHeaderInSection
的文档指出:“仅当还实现了tableView:heightForHeaderInSection:时,此方法才能正确工作。”我还没有听说iOS 8是否有任何更改。
如果无法做到这一点,模仿这种行为的最佳方法是什么?
这是可能的。它是iOS 8中实现的动态单元格高度的新增功能。
非常简单。只需将其添加到viewDidLoad
:
self.tableView.sectionHeaderHeight = UITableViewAutomaticDimension;
self.tableView.estimatedSectionHeaderHeight = 25;
然后覆盖viewForHeaderInSection
,并使用“自动布局”将视图中的元素限制为合适。而已!无需实现heightForHeaderInSection
。实际上,sectionHeaderHeight
也不需要说明,我只是为了清楚起见添加了它。
请注意,在iOS 11中,默认情况下,单元格和页眉/页脚视图使用估计的高度。唯一要做的是提供估计的高度,以更好地告知系统预期的结果。默认值为UITableViewAutomaticDimension
,但如果可能的话,您应该提供更好的估计值,即它们的平均高度。
这可以通过在表格视图上设置(或返回)estimatedSectionHeaderHeight
来完成。
如果在设置estimatedSectionHeaderHeight
后您的节标题与单元格重叠,请确保您也在使用estimatedRowHeight
。
(我添加此答案,因为第二段包含了一个问题的答案,在阅读了一些可能遗漏的所有评论之后可以找到。)
在同一问题中,标头的高度一直为零,直到我为heighForHeaderInSection
的委托中提供固定的高度。
我尝试过
Swift 4 +
就我而言:
是的,它对我有用。我必须进行如下更改: