带有多个内衬标签的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 导致单元格剪裁的主要内容,如果未能解决你的问题,请参考以下文章
string.split 返回一个字符串 [] 我想要一个 List<string> 是不是有一个内衬可以将数组转换为列表?