如何通过使用自动布局显示和隐藏组件来调整 UITableViewCell 的高度

How to resize UITableViewCell height by showing and hiding components using auto layout

我的单元格中有 4 个组件。

  1. UIView
  2. UITextView
  3. UIImageView
  4. UIImageView 之上的另一个 UIView
  5. UIView
  6. UIView

这些内容可以根据来自服务器的数据进行更改(有时需要隐藏第3个图像视图,有时是第5个UIView)。我正在使用自动布局,使用自动布局如何更改单元格的高度?

执行以下步骤:

  1. 当您隐藏任何组件时,将该组件的框架高度设置为 0 并重新加载 tableview。如果您给任何组件恒定高度,则取出高度约束的出口并将其设为零,并在取消隐藏时再次指定其恒定高度。

  2. 当你取消隐藏时给他特定的框架高度并重新加载tableView。

  3. heightForRow必须returnUITableViewAutomaticDimension

因为您已经从情节提要中获取组件,所以编译器了解单元格的高度并相应地工作。

如果您仍然遇到问题,可以询问。

this two methods are use for dynamic cell height

func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
    return UITableViewAutomaticDimension
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

    return UITableViewAutomaticDimension
}

您可以使用 UIStackView 轻松实现此目的。堆栈视图是快速轻松地设计用户界面的强大工具。它们的属性允许高度控制它们如何布置排列视图。

这里是 link 教程 - Tutorial

如果您从 stackview 中隐藏一个视图,它会很方便地从布局中消失,但它仍然是 stack 视图的子视图。因此,如果您想稍后将其取回,则无需执行任何特殊操作。并且通过使用自动调整大小的单元格,单元格将根据堆栈视图高度自动展开或折叠。

我post这是为了其他人遇到我的问题。

不要应用任何会更改 layoutSubviews 中单元格高度的更改,例如隐藏视图或更改任何视图的高度。