TextView和ImageView在同一单元格中的动态单元格大小

我有一个ImageView和一个TextView ,我需要动态单元格大小,这取决于textView内部是否有更多文本。

我正在使用UITableViewAutomaticDimension

在此处输入图像描述 在此处输入图像描述

UI示例:

cell正在以文本数量扩展,但不会扩展UIImage 。 我究竟做错了什么? 我应该如何添加约束以适应这种情况? 如果您需要更多信息,请与我们联系。

在此处输入图像描述

图像位于storyBoard固定单元格大小的storyBoard

如果我添加底部约束,其中红色圆圈位于第二个图像中,则textView文本仅在一行上且不再是动态的。

 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return UITableViewAutomaticDimension } func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { return UITableViewAutomaticDimension } 

如果我添加底部到superView textView不再动态。 (与上图相比。)

在尝试使它们协同工作时,底层约束是我的主要问题。

在此处输入图像描述

如果您正在使用自动布局,有一种更简单的方法可以在没有任何计算的情况下执行此操作,因此您也可以忘记使用heightForRowAtIndexPath委托,只需让Auto布局完成其工作。

嗯,技巧的关键只有三件事:

在单元格内容上设置所需的自动布局参数。

  1. 在tableview单元格高度上启用UITableViewAutomaticDimension。

  2. 为tableview提供一些预估数(用于优化滚动速度)。

  3. 在单元格内容上设置所需的自动布局参数

请记住规则是表格视图单元格上的所有项目都需要固定在父视图的top, bottom,leadingand trailing缘上。 例如,如果您的表格视图单元格有两个标签: brandNameLabel & brandAddressLabel ,那么这些标签的布局将是:

对于brandNameLabel:

在此处输入图像描述

对于brandAddressLabel:

在此处输入图像描述

有关更多信息,请参阅此参考

完成自动布局后,在viewdidLoad()方法中添加这两行代码

tableView.estimatedRowHeight = 100 //just give an estimated size based on your data tblAmount.rowHeight = UITableViewAutomaticDimension

你完成了 现在,单元格将自动调整到单元格的内容。

尝试像这样设置你的UIImage约束。

在此处输入图像描述

尾随,前导,顶部,底部和固定高度,宽度。

还写了UITableViewDelegate方法。

 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return UITableViewAutomaticDimension }