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布局完成其工作。
嗯,技巧的关键只有三件事:
在单元格内容上设置所需的自动布局参数。
-
在tableview单元格高度上启用UITableViewAutomaticDimension。
-
为tableview提供一些预估数(用于优化滚动速度)。
-
在单元格内容上设置所需的自动布局参数
请记住规则是表格视图单元格上的所有项目都需要固定在父视图的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 }