我只是尝试在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,但这仍然会导致崩溃所以我必须读错了。因此,为什么我做了第二个约束事情。
答案 0 :(得分:1)
您可以尝试更改约束的优先级。 例如:
constraint.priority = 0; // it's turn off
constraint.priority = 1000; // it's turn on