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

Posted

技术标签:

【中文标题】swift:TableViewCell 在滚动之前不会更新约束【英文标题】:swift: TableViewCell doesn't update constraints until scrolling 【发布时间】:2019-03-06 13:44:41 【问题描述】:

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

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

但是当我加载表格时,所有显示的单元格都会激活默认约束,并且只有在退出视图并再次进入后,它们才能正确显示。

【问题讨论】:

试试 tableCell.layoutIfNeed() 【参考方案1】:

为了一种简单的方法,您可以将它们嵌入水平的UIStackview 并设置

self.rightlb.isHidden = true

它会自动消失,没有宽度,在你当前的代码中也要确保

tableCell?.layoutIfNeeded()

更改约束后

【讨论】:

【参考方案2】:

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

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

希望这可行

【讨论】:

以上是关于swift:TableViewCell 在滚动之前不会更新约束的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 在滚动或重新加载 tableviewcell 之前不显示远程图像

Swift:动态更改 TableViewCell 高度和动态更改 WebView 高度

Swift - tableviewcell 中的动态按钮数

IOS swift我可以从TableViewCell中获取当前可见视图吗

UITableViewCell 中的 UICollectionView 在 swift 3 中滚动不流畅

Swift - TableViewCell 中不同大小的图像的困难