更改 NSLayoutConstraint 常量后,UIView 不会刷新



我想根据用户与按钮的交互来更改UITableView高度。当用户单击该按钮时,UITableView将展开,单击同一按钮UITableView高度仅减小以显示第一行。以下是我的代码

tblFaults?.setNeedsUpdateConstraints()
self.view.setNeedsUpdateConstraints()
if (currentNumber == 1)
{
currentNumber = 2
var newFrame = tblFaults?.frame
newFrame?.size.height += 67;//tried to change frame as well
tblFaults?.frame = newFrame!
faultViewHeight?.constant = 115 
//faultView height is  tableview height constraint
}
else
{
currentNumber = 1
var newFrame = tblFaults?.frame
newFrame?.size.height -= 67;
tblFaults?.frame = newFrame!
faultViewHeight?.constant = 48
}
tblFaults?.reloadData()
//self.view.setNeedsLayout()
//self.view.setNeedsDisplay()

我在代码后尝试了setNeedsDisplay,setNeedsLayout以及layoutSubviews()。但是视图不会在按钮单击后立即刷新,而是仅在下次用户交互(例如滚动视图更改等)后刷新

试试这个:

faultViewHeight?.constant = 48
tblFaults.layoutIfNeeded() // you need to call this method

谢谢大家。 实际上只有约束常量值更改和tableview.reloadData()就足够了。我犯的大错误是,我正在检查模拟器上的执行。我在设备上尝试了这个,它工作得很好。在模拟器上,即使在尝试self.view.layoutIfNeed()之后,我也面临着这个问题。我仍然不知道为什么这是模拟器上的行为而不是设备上的行为。但最终应用程序必须在设备上运行并在那里工作。:) 谢谢大家。

最新更新