我最近开始开发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中调用此函数。所有这些都包含更新的值。
答案 0 :(得分:0)
我使用了一个变量,该变量创建了对约束的新引用,这意味着有2个约束。编写语句的顺序意味着创建了约束的另一个实例,从而导致了冲突。 我的坏人