swift:TableViewCell在滚动之前不会更新约束

问题描述 投票:0回答:2

我有一个包含2个标签的tableviewCell。右边有一个固定的宽度和固定的尾随空间到superview,左边有一个固定的前导空间到superview和trailing到right label。有时候我只需要左边的标签,在这种情况下我希望左边的标签有一个固定的尾随空格来代替。所以,我创建了第二个非活动约束,并在我的代码中执行此操作:

if(entry.right.isEmpty) {
    tableCell?.longConstraint.isActive = true
    tableCell?.shortConstraint.isActive = false        
    tableCell?.rightLabel.isHidden = true
} else {
    tableCell?.longConstraint.isActive = false
    tableCell?.shortConstraint.isActive = true
    tableCell?.rightLabel.isHidden = false
}

但是当我加载表格时,所有显示的单元格都有默认约束活动,并且只有在匆匆离开视图后再次显示,它们才会正确显示。

swift
2个回答
0
投票

一个简单的方法,你可以将它们嵌入水平UIStackview并设置

self.rightlb.isHidden = true

并且它会在没有宽度的情况下自动消失,同样在您当前的代码中确保

tableCell?.layoutIfNeeded()

更改约束后


0
投票

尝试以编程方式调整约束后添加此代码

tableCell?.setNeedsLayout()
tableCell?.layoutIfNeeded()

希望这有效

© www.soinside.com 2019 - 2024. All rights reserved.