给uitableviewcell中具有更高高度的视图赋予底部约束

时间:2018-05-14 13:22:10

标签: swift uitableview nslayoutconstraint

我有以下UITableViewCell,其中包含label和imageview。图像视图的高度是固定的,但标签的高度会根据文本而变化。

如何给出底部约束,这样标签高度很小,那么单元格的高度应该根据imageviewsize,如果标签尺寸更大,则应该根据标签 我希望单元格看起来像它在图像中的方式enter image description here

1 个答案:

答案 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

enter image description here

ImageView 底部 Grater而不是等于(&gt; =)对SuperView( ContentView )的约束,例如20.所以当messageLabel将会有更多的高度它将推高单元格高度当它具有正常高度时,单元格将从ImageView获取高度。

Grater等于(&gt; =)约束(它基本上意味着始终保持 margin 例如20像素空间,因此它可以超过20像素但不是少于那个)

enter image description here