首页 > 解决方案 > 带有多个内衬标签的estimatedRowHeight 导致单元格剪裁

问题描述

一些背景:我有一个嵌套的tableView,其中我可以有不同类型的单元格,从地图到图像再到键值对等等,所以我不得不使用嵌套的tableView,这很难通过节行组合来实现

我正在使用自动调整大小的单元格。

在我的parentTableView我已经设置

parentTableView.rowHeight = UITableViewAutomaticDimension
parentTableView.estimatedRowHeight = 200

在我的childTableView,我已经设置

childTableView.rowHeight = UITableViewAutomaticDimension
childTableView.estimatedRowHeight = 68.0

68.0是我的单元格大小,它是一个自定义 XIB,具有两个UILabel垂直方向。现在当标签不是多行时,tableView 看起来很好。但是当我在标签上添加多行时,单元格被剪掉了

在此处输入图像描述

但是当我增加estimatedRowHeight一个更大的值80时,它不会被剪裁而是显示内容并在最后添加一些额外的空白

我相信正在发生的是,它查看estimatedRowHeight要显示的单元格的值和数量,并根据它计算父单元格的大小。并且当出现多行标签时,它会增加单元格的大小,但父单元格的大小已经定义,因此会被剪裁

谁能帮帮我我已经尝试了很多修复但没有任何效果。

标签: iosswiftautolayouttableview

解决方案


首先,我想建议请避免嵌套 tableView 的概念。重新加载时可能会遇到故障问题,当数据量很大时,可能会导致 UI 阻塞。

来到解决方案,请尝试以下解决方案: - 根据您的要求为每个元素添加约束,除了最后一个 UILabel。- 添加顶部和底部约束(强制)以及任何其他约束(如果需要)。它将帮助单元格了解该单元格的运行时高度。- 在 tableViewCell(_heightforrow) 方法中,将高度作为返回

UITableViewAutomaticDimension

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { return UITableView.automaticDimension }


推荐阅读