ios - UITableView 部分标题自动高度未正确更新

标签 ios uitableview uitableviewsectionheader uitableviewautomaticdimension

我遇到了自动/动态 UITableView 部分标题 View 的问题,其中包含一个 UILabel 包装 (numberOfLines = 0)。高度计算不正确,尤其是当您滚动表格并且重新使用 View 时。有时 UILabel 会换行,有时会被截断,有时一个或多个标签不可见,有时标签之间会有额外的间距。自定义 View 包含一个带有三个 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() 但无济于事。任何建议将不胜感激。

下面是在应用程序中看到的行为的屏幕截图。第一段被截断,第二段太高:

enter image description here

最佳答案

我最近遇到了这样的问题。

我通过设置多行标签的 preferredMaxLayoutWidth 解决了这个问题,即

在设置标签值之前,将它们的 preferredMaxLayoutWidth 设置为:

self.label1.preferredMaxLayoutWidth = self.label1.frame.size.width
self.label2.preferredMaxLayoutWidth = self.label2.frame.size.width
self.label3.preferredMaxLayoutWidth = self.label3.frame.size.width

关于ios - UITableView 部分标题自动高度未正确更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44005890/

相关文章:

ios - UITableView 行在 UITableViewHeaderSection 下滑动

iphone - iOS6设备旋转受到限制

ios - 包含 UISwitch 的 UITableView 单元格更新不一致

iphone - 如何在表格 View 内显示表格单元格的详细 View ?

ios - UITableview 刷新单元格在节标题下滚动

ios - 检测 UITableView 部分标题何时捕捉到屏幕顶部

ios - NSURLConnection initWithRequest 已弃用

ios - 获取 NSArray 中 NSFetchRequest 的所有结果

ios - 仅在最近没有崩溃时才显示 SKStoreReviewController?

ios - 提高 iPhone UITableView 滚动性能的技巧?