我遇到了自动/动态 UITableView 部分标题视图的问题,其中包含一个包装的 UILabel ( numberOfLines = 0 )。高度计算不正确,尤其是在您滚动表格并重用视图时。有时 UILabel 会换行,有时会被截断,有时一个或多个标签不可见,有时标签之间有额外的间距。自定义视图包含一个带有三个 UILabel 的垂直 UIStackView,其中一个会换行。
可以在https://github.com/outerstorm/tableviewHeaderTest找到演示该问题的完整示例应用程序。
部分标题高度在 viewDidLoad 中设置为自动,如下所示:
tableView.sectionHeaderHeight = UITableViewAutomaticDimension
tableView.estimatedSectionHeaderHeight = 30.0
并且还实现了以下 heightForHeaderInSection 只是为了让它工作:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return UITableViewAutomaticDimension
}
我也试过在不同的地方调用setNeedsLayout()和layoutIfNeeded()都无济于事。任何建议将不胜感激。
下面是在应用程序中看到的行为的屏幕截图。第一段被截断,第二段太高: