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

时间:2017-04-25 06:36:10

标签: ios objective-c uitableview tableviewcell

我的手机中有4个组件。

  1. 的UIView
  2. 的UITextView
  3. 的UIImageView
  4. UIImageView
  5. 之上的另一个UIView
  6. 的UIView
  7. 的UIView
  8. 这些内容可以根据来自服务器的数据进行更改(有时需要隐藏第3个图像视图,有时需要隐藏第5个UIView)。我使用自动布局和自动布局是什么方法来改变单元格的高度?

4 个答案:

答案 0 :(得分:1)

执行以下步骤:

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

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

  3. heightForRow必须返回UITableViewAutomaticDimension

  4. 由于您已经从故事板中获取了组件,因此编译器可以理解单元格的高度并相应地工作。

    如果你仍然面临问题,你可以问。

答案 1 :(得分:1)

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

以下是教程链接 - Tutorial

如果您从stackview中隐藏视图,它会方便地从布局中消失,但它仍然是堆栈视图的子视图。因此,如果您想稍后将其恢复,那么您不必做任何特别的事情。通过使用自定义单元格,单元格将根据堆栈视图高度自动展开或折叠。

答案 2 :(得分:0)

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
}

答案 3 :(得分:0)

我将其发布给其他人来解决我的问题。

请勿应用任何会改变layoutSubviews中像元高度的更改,例如隐藏视图或更改任何视图的高度。