自动布局约束已更新但未反映方向更改

时间:2017-09-05 12:31:17

标签: ios swift autolayout

我最近开始开发iOS应用。我为多个视图的topAnchors设置了自动布局约束,但没有一个在设备轮换时更新。

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,但不会反映在视图上。尝试在viewWillTransition中调用view.layoutIfNeeded,view.updateConstraintsIfNeeded。

编辑:功能更新常量

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

然后我在viewWillTransition中调用此函数。所有这些都包含更新的值。

1 个答案:

答案 0 :(得分:0)

我使用了一个变量,该变量创建了对约束的新引用,这意味着有2个约束。编写语句的顺序意味着创建了约束的另一个实例,从而导致了冲突。 我的坏人

相关问题