自动布局约束已更新,但在方向更改中没有反思



我最近开始开发一个iOS应用程序。我为多种视图的Topancher设置了自动布局约束,但没有一个在设备旋转时更新。

headerView.topAnchor.constraint(equalTo: outlineView.topAnchor, constant: headerAnchor).isActive = true
// headerAnchor is a calculated value which changes with orientation change.

我什至尝试使用函数更改常数并在ViewWillTransition中调用。

检查调试视图层次结构时,它说:view.top = view.top 110.4 @ 1100

^该110.4是肖像方向的价值。旋转时,它变为48.6,但在视图上没有反映。尝试调用view.layoutifneed,view.updateconstraintsifneed在ViewWillTransition中。

编辑:功能更新常数

的值
 var headerViewTopAnchor: NSLayoutConstraint?
.
.
.
 headerViewTopAnchor = headerView.topAnchor.constraint(equalTo: outlineView.topAnchor, constant: headerAnchor) 
.
.
.
func updateConstraintConstants() {
headerViewTopAnchor?.constant = headerAnchor
}

然后,我将此函数称为ViewWillTransition。所有这些都包含更新的值。

我使用了一个变量,该变量创建了对约束的新引用,这意味着有2个约束。写出陈述的顺序意味着制定了另一个限制的实例,从而导致冲突。我的坏