自定义表格单元格中的堆栈视图

Posted

技术标签:

【中文标题】自定义表格单元格中的堆栈视图【英文标题】:stackview in custom table cell 【发布时间】:2019-12-13 10:03:22 【问题描述】:

在自定义表格单元格中,我试图在单击按钮时隐藏/显示视图。我能够做到这一点,但无法删除空白。如何删除那些空格。我对堆栈视图使用了自动约束,但似乎没有用。当视图处于隐藏状态时,任何人都可以建议一种简单的方法来删除空格。

注意: 自定义单元格在附加到表格视图时应根据内容自动调整其高度

编辑一个

如您所见,开始日期和结束日期位于底部,没有任何动态高度变化

自定义单元格的预览。在此单元格堆栈视图中,底部最初设置为隐藏。

【问题讨论】:

您是否在进行更改后重新加载单元格? 如何定义单元格高度?是维度吗?您是否在更新时重新加载表格单元格?空格处?你应该更新你的问题,从我的角度来看它很模糊。 显示一些你尝试过的代码。 使用“UITableViewAutomaticDimension”获取高度 您可以创建一些约束并在按钮单击之间切换 【参考方案1】:

你有几个选择...


1) 使用另一个堆栈视图:

UIView 中嵌入顶部的“始终可见”元素 将该视图和“有时隐藏”的堆栈视图嵌入到垂直的“外部”堆栈视图中 将此新的“外部”堆栈视图约束到单元格内容视图的所有 4 个侧面

现在,当您隐藏“有时隐藏”的堆栈视图时,它不会占用任何空间。


2) 使用多个底部约束:

保持底部约束从“有时隐藏”堆栈视图的底部到单元格内容视图的底部。将其设为IBOutlet - 我们将其称为whenHiddenConstraint 从最底部的“始终可见”元素的底部添加一个约束到单元格内容视图的底部。将其设为IBOutlet - 我们将其命名为whenVisibleConstraintwhenVisibleConstraint 的优先级设置为750whenHiddenConstraint 的优先级设置为250

现在,在您的代码中,当隐藏“有时隐藏”的堆栈视图时:

theStackView.isHidden = true
whenVisibleConstraint.priority = .defaultLow
whenHiddenConstraint.priority = .defaultHigh

当您想显示“有时隐藏”的堆栈视图时:

theStackView.isHidden = false
whenHiddenConstraint.priority = .defaultLow
whenVisibleConstraint.priority = .defaultHigh

【讨论】:

以上是关于自定义表格单元格中的堆栈视图的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义表格视图单元格中的故事板segue

自定义表格视图单元格中的可编辑文本字段

iOS:自定义表格视图单元格中的约束

自定义表格视图单元格中的 UITextField。点击单元格/文本字段时显示选择器视图

IOS/Objective-C:检测自定义表格视图单元格中的按钮按下?

如何为自定义表格视图单元格中的按钮单击获取不同的视图控制器