NSLayoutConstraint自行重新激活

时间:2017-03-29 13:32:22

标签: ios objective-c ios-autolayout

我为strong文件中的UILabel和它的出口创建了.xib约束。

在我的代码中,我设置了self.constraint.active = NO,但在应用程序加载后,当我打开Debug View Hierarchy时,相同的约束处于活动状态。

我尝试在viewDidLoadupdateViewConstraintsviewDidLayoutSubviews设置它无效。

我还创建了一个NSLayoutConstraint子类,覆盖了setActive:方法并在其中加了一个断点,但只有我的代码触发了它。

1 个答案:

答案 0 :(得分:2)

在玩限制时,我建议尽可能晚地进行。根据您的情况,可能早在viewDidLoad

无论您最终做什么,都可以通过layoutIfNeeded来强制刷新。

如果我没有弄错的话,您可以禁用约束,然后强制更新约束/布局(updateConstraints setNeedsLayout),然后调用layoutIfNeeded。但我认为你只需要修改你的约束,这样做会自动设置你的视图,只要它有时间或你拨打layoutIfNeeded时就重新开始。

无论哪种方式,只尝试这两行,否则,添加我在括号之间放置的那些。

我不会撒谎,有时约束是iOS的一部分,部分技能,部分黑魔法。