带有多个内衬标签的estimatedRowHeight 导致单元格剪裁

Posted

技术标签:

【中文标题】带有多个内衬标签的estimatedRowHeight 导致单元格剪裁【英文标题】:estimatedRowHeight with multiple lined label causing clipping of cell 【发布时间】:2019-10-11 08:52:36 【问题描述】:

一些背景:我有一个嵌套的 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 值和要显示的单元格数量,并根据该值计算父单元格大小。当出现多行标签时,它会增加单元格的大小,但父单元格的大小已经被定义,因此会被剪裁

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

【问题讨论】:

您在 xib/storyboard 中的自动布局设置似乎有些问题。你能提供一些示例项目,例如在 github 上吗? @Michcio 这是一个大项目,我不能删掉那部分并复制它,因为有很多依赖项。我可以上传我正在使用的 XIB 吗? 你可以试一试,或许有助于找出错误。 @user121095 上传您的单元格 xib 和 viewcontroller 文件以便我提供帮助 【参考方案1】:

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

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

UITableViewAutomaticDimension

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat 返回 UITableView.automaticDimension

【讨论】:

以上是关于带有多个内衬标签的estimatedRowHeight 导致单元格剪裁的主要内容,如果未能解决你的问题,请参考以下文章

IOS7中的内衬UITextView

sql 两个内衬为您的查询/会话启用SQL统计信息

盒装卷烟包装系统各部分阻隔性能测试

插入带有多个标签的 InfluxDB 时“缺少标签键”

string.split 返回一个字符串 [] 我想要一个 List<string> 是不是有一个内衬可以将数组转换为列表?

带有多个参数的 Django 模板标签过滤器