我有以下UITableViewCell,其中包含label和imageview。图像视图的高度是固定的,但标签的高度会根据文本而变化。
如何给出底部约束,这样标签高度很小,那么单元格的高度应该根据imageviewsize,如果标签尺寸更大,则应该根据标签 我希望单元格看起来像它在图像中的方式
答案 0 :(得分:1)
首先将 TableView rowHeight 提供给 UITableViewAutomaticDimension 。它将允许tableView单元格高度根据其内容增长:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
或强>
self.tableView.rowHeight = UITableViewAutomaticDimension
因为你很容易给出名字,所以你在tableViewCell中有: - ImageView,messageLabel,profileNameLabel和timeLabel。
<强>步骤1:强> 将 ImageView 约束顶部和左侧提供给superView(内容视图),将timeLabel设置为右侧,以超级视图也对齐< strong>中心Y 到 ImageView 。
<强>步骤2:强> 现在位于中间,将 messageLable 约束提供给 superView ,左侧为 imageView ,右侧为 superView 。 确保messageLable no of line为0。
<强>步骤3:强> 然后将 profileNameLable 约束提供给Top strong并引导至 messageLable 。
<强>步骤4:强> 所以现在让你的tableViewCell高度将根据你的内容(messageLable变量高度)增长。将您的profileNameLabel 底部Grater等于(&gt; = )限制到SuperView( ContentView ),例如20
ImageView 底部 Grater而不是等于(&gt; =)对SuperView( ContentView )的约束,例如20.所以当messageLabel将会有更多的高度它将推高单元格高度当它具有正常高度时,单元格将从ImageView获取高度。
Grater等于(&gt; =)约束(它基本上意味着始终保持 margin 例如20像素空间,因此它可以超过20像素但不是少于那个)