ios - 带有多个内衬标签的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
要显示的单元格的值和数量,并根据它计算父单元格的大小。并且当出现多行标签时,它会增加单元格的大小,但父单元格的大小已经定义,因此会被剪裁
谁能帮帮我我已经尝试了很多修复但没有任何效果。
解决方案
首先,我想建议请避免嵌套 tableView 的概念。重新加载时可能会遇到故障问题,当数据量很大时,可能会导致 UI 阻塞。
来到解决方案,请尝试以下解决方案: - 根据您的要求为每个元素添加约束,除了最后一个 UILabel。- 添加顶部和底部约束(强制)以及任何其他约束(如果需要)。它将帮助单元格了解该单元格的运行时高度。- 在 tableViewCell(_heightforrow) 方法中,将高度作为返回
UITableViewAutomaticDimension
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { return UITableView.automaticDimension }
推荐阅读
- amazon-web-services - 为什么 AWS 使用 {"Key" : key, "Value" : val} 语法?
- reactjs - 预期的 ';' 在 JSX 构造函数定义中
- java - 检查Java中数组中复选框的状态
- lisp - lisp:连接任意数量的列表
- arrays - Lua中字符串数组的连接
- ios - 如何从firestore中的子集合文档中获取根文档?
- ios - 在 swift 5 中呈现 viewController 像弹出拨号一样打开
- php - 如何解决 CodeIgniter 中的跨会话问题?
- c# - 为什么 cURL 有效,但我的 HttpWebRequest 无效?
- java - 如何让 Eclipse 在源代码文件夹以外的不同文件夹中创建 .classpath、.settings 文件?