【问题标题】:How to maintain constraints even after deleting label in UITableViewCell - Swift 3即使在 UITableViewCell 中删除标签后如何保持约束 - Swift 3
【发布时间】:2017-12-21 04:33:33
【问题描述】:

所以目前,我有一个看起来像这样的 tableviewcell

我想要发生的是,如果日期的开销已经存在,顶部标签应该消失,tableviewcell 高度应该从 95 减少到 64,并且所有内容都应该居中对齐。有点像

我尝试了很多方法。

  1. 使用 2 个不同的单元格并切换,但这不起作用,因为一次只返回一项费用,而且我的 tableviewcontroller 没有正确填充。

  2. 尝试使用堆栈视图,但在这种情况下,我无法让约束与当前的匹配。

我在 heightForRowAtIndexPath 方法中返回了所有正确的行高,但它集中降低了高度并且一些数据被剪切了。

如何实现我想要做的事情(标签不可见,行高减小,所有内容垂直居中)?

这里是切换单元格的代码。

func tableView(_ tableView: UITableView,
               heightForRowAt indexPath: IndexPath) -> CGFloat
{
        if newMode==true {
            return 95
        }
        else if newMode==false {
            return 64
        }
        else {
            return 0
        }
}

这可行,但是它降低了顶部和底部的高度,我只希望降低顶部的高度。

【问题讨论】:

  • 你能提供相关的代码吗?使用stackview应该可以完成。
  • 使用stackView,一切都在一条线上,我无法应用约束。
  • 发布您的代码@A.G
  • 完成了,您还需要其他代码吗?
  • @A.G 获取该标签的高度约束的出口,并在填充表格视图之前,检查是否存在日期费用,如果是,则设置高度约束 = 0 并更新单元格高度因此。我想你可以在这里使用枚举。

标签: ios uitableview swift3 autolayout


【解决方案1】:

您不应使用委托方法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

另一种可能的解决方案是删除(费用日期)标签的高度限制,并将其文本设置为空字符串。

【讨论】:

  • 这可行,但不会将单元格的高度降低到 64。它所做的只是使标签和文本不可见。
  • @A.G 调用 tableView.reloadData() 或 tableView.beginUpdates() ... tableView.endUpdates()
  • @A.G 你似乎不知道 table view 动态单元格高度是如何工作的,estimatedRowHeight 64 -> 这个值是为了让 table view 知道滚动高度来调整滚动条的。它没有给表格单元格固定的单元格高度。
  • 好的,但是如果我想将行高调整为64,我该怎么办?
  • @A.G 您有两种选择,1-如果您想使用动态表格视图单元格高度功能,请提供单元格的父视图(将所有单元格子视图放在一个视图中)并给它固定大小的高度约束等于 64。 2- 使用该方法,就像你在做 heightForRowAt 委托方法一样。
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
  • 2021-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多