当用户与应用程序交互时,我的视图控制器中的视图高度需要更改。有时视图需要更大的高度,而另一些时候则需要更短,这取决于用户拥有的选项数量。
我已经实现了一个根据视图状态更改高度的方法,我在viewDidLoad
中调用此方法来设置初始状态,并在状态更改时调用该方法。
但是,视图实际更新布局的唯一时间是来自viewDidLoad
中的调用。我的方法的所有其他调用都不会更新视图。
func updateContainerViewHeight(constant: CGFloat) {
print("lets update")
baseView.heightAnchor.constraint(equalToConstant: constant).isActive = true
containerView.heightAnchor.constraint(equalToConstant: constant).isActive = true
self.view.setNeedsLayout()
UIView.animate(withDuration: 0.25) {
self.view.layoutIfNeeded()
}
}
仅供参考的print("let's update")
正在控制台中打印。
发布于 2020-02-17 14:15:30
就像这里
baseView.heightAnchor.constraint(equalToConstant: constant).isActive = true
containerView.heightAnchor.constraint(equalToConstant: constant).isActive = true
每次调用都会添加新的约束,这将导致冲突,因此创建
1-
var baseCon,containCon:NSLayoutConstraint!
2-
baseCon = baseView.heightAnchor.constraint(equalToConstant: constant)
baseCon.isActive = true
containCon = containerView.heightAnchor.constraint(equalToConstant: constant)
containCo.isActive = true
3-然后玩常量游戏
baseCon.constant = ////
https://stackoverflow.com/questions/60264354
复制