如何动态扩展UITableViewCell高度?

时间:2017-07-16 14:46:46

标签: ios swift uitableview

我有UITableView。在我的tableview中,我想动态地将另一个视图添加到我的单元格中并扩展单元格高度。我看过一些例子,但那些是UILabels。 UILabels可以根据文本高度更改高度。但是,如何手动添加另一个视图并展开这些单元格呢?

请帮帮我 感谢

3 个答案:

答案 0 :(得分:0)

如果你使用手动计算单元格高度,它很容易,在你添加另一个视图后,你计算高度,然后调用reloadData或reloadRowsAtIndexPaths,并在tableview:heightForRowAtIndexPath函数中返回高度。 如果你使用自动计算单元格高度。你应该让系统知道如何计算,你应该清楚而完整地设置自动布局。你应该添加另一个视图的左,右,上,下约束,系统将自动计算高度。细胞将被扩大。

答案 1 :(得分:0)

您可以通过覆盖func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat

来设置单元格高度

答案 2 :(得分:0)

实现这两个UITableViewDelegate方法:

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

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

动态单元格中的视图需要具有顶部,底部,尾随,前导和高度约束。设置视图高度约束常量将根据视图高度设置单元格高度。

您可以在动态单元格中拥有视图高度约束属性:

@IBOutlet weak var customViewHeightConstraint: NSLayoutConstraint!

可以在cellForRowAt中更改约束常量值:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "CellId", for: indexPath) as! Cell

    switch indexPath.row {
    case 0:
        cell.customViewHeightConstraint.constant = 100
    case 1:
        cell.customViewHeightConstraint.constant = 200
    case 2:
        cell.customViewHeightConstraint.constant = 300
    case 3:
        cell.customViewHeightConstraint.constant = 400
    default:
        cell.customViewHeightConstraint.constant = 100
    }

    return cell
}