NSLayoutConstraint激活/停用

时间:2017-07-22 00:41:15

标签: swift3 nslayoutconstraint

我只是尝试在textViewDidBeginEditing中停用约束,在textViewDidEndEditing中停用。

我的NSLayoutConstraint是一个出路。 textViewDidBeginEditing中的取消激活有效,但是对textViewDidEndEditing的重新激活在约束中找到nil。

我已经尝试使用.isActive实例值以及NSLayoutConstraint.activate / deactivate函数。

答案 我玩了Vasil Hristov的答案,但是没有用,因为他只是建议0和1000.来自文档:

  

优先级可能不会从非要求变为必需,或从必需变为非要求。如果OS X中的NSLayoutPriorityRequired或iOS中的UILayoutPriorityRequired的优先级更改为较低的优先级,或者在将约束添加到a之后将较低的优先级更改为所需的优先级,则会引发异常视图。即使在视图上安装了约束,也允许从一个可选优先级更改为另一个可选优先级。

所以,我不得不首先将IB中的优先级更改为其他内容(我选择750 - 高)然后在不需要时将其切换为250,并创建第二个约束与第一个约束冲突在任何时候都有500个优先级(做其他事情),这让我得到了我想要的行为。

根据上面的文档,由于不需要High,我应该能够切换到0,但这仍然会导致崩溃所以我必须读错了。因此,为什么我做了第二个约束事情。

1 个答案:

答案 0 :(得分:1)

您可以尝试更改约束的优先级。 例如:

constraint.priority = 0;    // it's turn off
constraint.priority = 1000; // it's turn on