2017-07-25 57 views
1

我有一个包含几个约束的视图。其中一些已关闭“已安装”复选框。我正在尝试根据应用程序的状态激活和停用特定的约束。激活在故事板中被卸载的约束条件

问题是,当安装的复选框关闭时,我无法激活约束条件,也无法停用已安装的约束条件。 我需要提到的是,我在我的大小类属性中使用强引用来约束。在激活/关闭约束条件后,我还尝试了一种调用setNeedsUpdateConstraints和updateConstraintsIfNeeded,setNeedsLayoutlayoutIfNeeded的方法。

我找不到有关此行为的任何文档,为什么会发生这种情况?

+0

可能是你忘了约束与IBOutlet中的变量连接?或者你在故事板中有不同的VC课程?要检查这个添加断点到viewDidLoad函数并查看IBOutlet变量。 –

+0

您应该连接一个IBOutlet进行约束,并根据您的要求更新constraintVariable.active = Yes/No。之后调用layoutIfNeeded方法。 –

+0

我检查了IBOutlets,他们没事。当我调用setActive时,它甚至改变了活动属性的值,但是当我调试View Hierarchy时,我找不到卸载和激活的约束(通过代码)。我只有已安装的属性(我已将它们设置为通过代码停用)。我也叫layoutIfNeeded和约束/布局更新的每个可能的组合。 – Dan

回答

2

要确保你把你的代码在正确的地方

override func viewDidLayoutSubviews() { 
// write your code here 
} 
+0

谢谢。这似乎工作。 – Dan

+0

@不用客气 –

2

OutLet例如用于特定的约束:

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *constraint;) 
//For Installing 

[self.view addConstraint: constraint] 

//For Uninstalling 

[self.view removeConstraint: constraint] 
+0

尼斯为我工作! –