Tableview 没有得到 Xib 文件的高度

Posted

技术标签:

【中文标题】Tableview 没有得到 Xib 文件的高度【英文标题】:Tableview not getting Xib files height 【发布时间】:2019-09-25 12:49:14 【问题描述】:

我为我的 tableview 创建了 3 个自定义 .xib 文件。 但我无法弄清楚每个单元格的高度。

我已经在 viewdidLoad() 中实现了上面一行

tableview.estimatedRowHeight = 120
tableview.rowHeight = UITableView.automaticDimension

我刚刚在每个 .xib 文件中放了一个 uiview,有 4 个约束(前导、尾随、顶部、底部)

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

但它没有为我的单元格设置适当的高度。

只有当我对值进行硬编码时,它才会起作用。

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
        return 200
    

如何处理这个问题,因为数据很快就会变成动态的,我无法更改这些硬编码的值。

【问题讨论】:

您应该使用子视图的内容拥抱/抗压缩属性。 ios dynamical height of UITableViewCell and heightForRowAtIndexPath的可能重复 我在每个 xib 文件中只有一个 uiview,我已将内容拥抱优先级设置为 246(水平和垂直)。仍然没有发生。 你需要给xib设置一个高度,这样tableView才能计算行的高度。 【参考方案1】:

UIView 默认没有高度值。在您尝试时,这不会设置单元格的高度。

您可以尝试在已解决 4 个约束(前导、尾随、顶部、底部)的 UIView 中放置 UILabel 或 UIButton。

注意:如果你想要 UITableViewCell 的自动高度,UILabel 或 UIButton 还需要 4 个约束(前导、尾随、顶部、底部)。

【讨论】:

【参考方案2】:

将你的UIView替换为UILabel并将行数设置为零,然后它会根据UILabel的内容自动取高度

【讨论】:

以上是关于Tableview 没有得到 Xib 文件的高度的主要内容,如果未能解决你的问题,请参考以下文章

计算xib文件的高度

点击时更改 TableView 高度(在 xib 中使用自动布局)

使用 Swift 3.0 中的数据在 Xib 中显示 tableView

ios tableView的header高度不对

使 CollectionView 和 TableView 高度动态化

在 indexPath 处的行的 Tableview 高度崩溃