【发布时间】:2020-02-17 14:13:01
【问题描述】:
当用户与应用程序交互时,我的视图控制器中的视图高度需要改变。有时视图需要更大的高度,而有时它需要更短,具体取决于用户拥有的选项数量。
我已经实现了一个根据视图状态改变高度的方法,我在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") 正在控制台中打印。
【问题讨论】:
-
如果您没有看到任何变化,那么您很可能存在其他冲突的约束。例如。你有旧的身高限制吗?如果是这样,请创建这些约束的出口并更新它们各自的
constant值。 -
顺便说一下,不需要调用
setNeedsLayout。
标签: ios swift xcode nslayoutconstraint