在特定条件下切换约束

时间:2017-04-04 21:06:28

标签: ios swift uikit nslayoutconstraint

设置:我设计的UIButton底部为constraint X,优先级为999.除此constraint之外,UIButton还有另一个constraint Y,优先级1000,但这一个标记为installed = false

Y与@IBOutlet UIViewController中的viewDidLoad()相关联,并附有强大的参考资料。

constraint上:如果某个条件恰好为真,我会Y.isActive = true激活view.layoutIfNeeded() Y,然后updateConstraints(),最终调用constraint } 如果需要的话。如果条件是假的,我什么都不做。

我的期望:当条件为真时,我希望视图将Y UIButton应用于按钮并删除X.当条件为假时,我希望constraint只有{ {1}} X。

结果:即使符合条件,似乎constraint Y根本没有被应用。

我很感激对此的任何想法,这对我来说似乎应该有用。

感谢。

P.S。我使用swift,但我不介意提供的答案是否在Obj-C中。

1 个答案:

答案 0 :(得分:-1)

使用IB时似乎存在一个错误,其中将约束的属性设置为已卸载并不会始终正常工作,因为它处于非活动状态'但是,它会在激活/停用给定约束时产生问题。

作为一种变通方法,始终将约束标记为已安装,但对于那些需要在加载时处于非活动状态的约束,请转到身份检查器/用户定义的运行时属性并添加“活动”#39;作为布尔值设置为false(未选中)

在此处找到解决方案:https://stackoverflow.com/a/33079428/691868