计算xib文件的高度

Posted

技术标签:

【中文标题】计算xib文件的高度【英文标题】:Calculate height of Xib file 【发布时间】:2019-08-23 07:18:00 【问题描述】:

我在我的表格视图中实现了 2 Xib。 其中一个 xib 具有堆栈视图并具有动态数据,因为其大小可以从 300 点到 360 点不等, 目前,我正在实现以下功能。 但这并不能解决问题,因为我必须添加最大高度。 有什么方法可以动态计算我的1 xib 视图的高度并相应地更新第一个单元格

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
    if indexPath.row == 0 
        return 360.0 // max height of first xib
     else 
        return (heightOfSecondXib)
     

【问题讨论】:

不要不要实现heightForRowAt。如果您在xib 中正确设置了约束,则自动布局会自动为您处理高度。 我试过了,但它不会自动调整大小。 那么听起来你的约束设置不正确。显示您的 XIB 文件的设计(带有可见约束的屏幕截图)。 【参考方案1】:

UITableView 中的动态高度使用这个

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

对于任何动态数据/大小问题,使用 UITableViewAutomaticDimension 是一个好方法。但是为此,您必须对 Xib 进行准确的限制,以便它可以按您的意愿显示。

【讨论】:

说 OP 应该对自动单元格高度使用适当的约束是正确的,但你应该NOT以这种方式实现heightForRowAt。从 ios 10(甚至可能是 9)开始,UITableView.automaticDimension 是默认设置。以这种方式实现它会迫使 UIKIt 在不需要时调用此函数。

以上是关于计算xib文件的高度的主要内容,如果未能解决你的问题,请参考以下文章

Tableview 没有得到 Xib 文件的高度

从 XIB 获得高度

从 xib 添加自定义视图作为子视图时,UITableViewCell 的高度错误

如何动态计算自定义展开/可折叠 UITableViewCell 的高度

Interface Builder 布局 UIViewController xib 用于更改顶部栏高度的方向

根据子视图高度调整 UITableViewCell(从 xib 创建)高度