如何在UITableViewCell - Swift 3中删除标签后仍然保持约束
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在UITableViewCell - Swift 3中删除标签后仍然保持约束相关的知识,希望对你有一定的参考价值。
所以目前,我有一个看起来像这样的tableviewcell
我想要发生的是,如果已经存在日期费用,顶部标签应该消失,tableviewcell高度应该从95减少到64并且所有内容都应该集中对齐。有点像这样
我尝试过很多方法。
- 使用2个不同的单元格并切换,但这不起作用,因为一次只返回一个费用而我的tableviewcontroller没有正确填充。
- 尝试使用堆栈视图,但在那里,我无法获得匹配的限制,因为它们是当前的。
我在heightForRowAtIndexPath方法中返回了所有正确的行高,但它集中降低了高度,并且一些数据被剪切掉了。
怎么可能实现我想做的事情(标签不可见,行高减少,一切垂直居中)?
这是切换单元格的代码。
func tableView(_ tableView: UITableView,
heightForRowAt indexPath: IndexPath) -> CGFloat
{
if newMode==true {
return 95
}
else if newMode==false {
return 64
}
else {
return 0
}
}
这是有效的,但它会降低顶部和底部的高度,我只希望减少顶部的高度。
答案
你不应该使用委托方法heightForRowAt
,你应该使用:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 80
然后给(费用日期)标签一个高度约束并连接一个出口。
在cellForRowAtIndex
委托方法应该有:
if expense != nil
{
lblExpenseConstraintHeight.constant = 0
}
else
{
lblExpenseConstraintHeight.constant = 34
}
cell.layoutIfNeeded()
编辑:
有关动态tableViewHeight的更多信息:
Using Auto Layout in UITableView for dynamic cell layouts & variable row heights
另一种可能的解决方案是删除(费用日期)标签的高度约束,并将其文本设置为空字符串。
以上是关于如何在UITableViewCell - Swift 3中删除标签后仍然保持约束的主要内容,如果未能解决你的问题,请参考以下文章