NSLayoutConstraint 自己重新激活
NSLayoutConstraint re-activates by itself
我在 .xib
文件中为 UILabel
创建了一个 strong
约束,并为其创建了一个出口。
在我的代码中,我设置了 self.constraint.active = NO
,但在应用程序加载后,当我打开 Debug View Hierarchy
时,相同的约束处于活动状态。
我尝试在viewDidLoad
、updateViewConstraints
和viewDidLayoutSubviews
中设置它,但没有用。
我还创建了一个NSLayoutConstraint
子类,重写了setActive:
方法并在其中放置了一个断点,但只有我的代码触发了它。
在使用约束时,我建议尽可能晚地进行。根据您的情况,可能最早 viewDidLoad
.
无论您最终做什么,都可以通过 layoutIfNeeded
调用强制刷新。
如果我没记错的话,您可以禁用约束,然后强制更新约束/布局 (updateConstraints
setNeedsLayout
),然后调用 layoutIfNeeded
。但我认为你只需要修改你的约束,这样做会自动将你的视图设置为在有时间或你调用 layoutIfNeeded
.
时重新布局。
无论哪种方式,只尝试这两行,否则,添加我放在括号中的那些。
我不想撒谎,有时限制是一部分 iOS,一部分是技能,一部分是黑魔法。
我在 .xib
文件中为 UILabel
创建了一个 strong
约束,并为其创建了一个出口。
在我的代码中,我设置了 self.constraint.active = NO
,但在应用程序加载后,当我打开 Debug View Hierarchy
时,相同的约束处于活动状态。
我尝试在viewDidLoad
、updateViewConstraints
和viewDidLayoutSubviews
中设置它,但没有用。
我还创建了一个NSLayoutConstraint
子类,重写了setActive:
方法并在其中放置了一个断点,但只有我的代码触发了它。
在使用约束时,我建议尽可能晚地进行。根据您的情况,可能最早 viewDidLoad
.
无论您最终做什么,都可以通过 layoutIfNeeded
调用强制刷新。
如果我没记错的话,您可以禁用约束,然后强制更新约束/布局 (updateConstraints
setNeedsLayout
),然后调用 layoutIfNeeded
。但我认为你只需要修改你的约束,这样做会自动将你的视图设置为在有时间或你调用 layoutIfNeeded
.
无论哪种方式,只尝试这两行,否则,添加我放在括号中的那些。
我不想撒谎,有时限制是一部分 iOS,一部分是技能,一部分是黑魔法。