首页 > 解决方案 > 更改 UIView 的边界原点时约束未更新

问题描述

我有一个 UIView A,其中包含另一个 UIView B(A 的子视图)。还有另一个 UIView C(UIView A 的父视图的子视图),它应用了约束,使得 UIView C 的顶部锚点与 UIView B 的底部锚点对齐,UIView C 的左锚点与 UIView 的左锚点对齐B.

现在,当我尝试更改 UIView A 的边界原点时,UIView B 的位置会更新,但 UIView C 的位置不会更改,从而导致破坏了原始约束。

我尝试执行 setNeedsLayout 和 updateConstraints,但没有任何效果。

当 UIView C 是 UIView A 的孩子时,它可以正常工作。

如何保持 UIView C 成为 UIView A 的兄弟,并在更改 UIView A 的边界原点的同时保持约束?

标签: iosuiviewautolayout

解决方案


首先,你有一个小错误

UIView C 的左锚点与 UIView B 的左锚点对齐。

NSLayoutConstraint *left = [myView.leftAnchor constraintEqualToAnchor:secondView.rightAnchor constant:0];

试着打电话

[self.view layoutIfNeeded];

界限改变后


推荐阅读