UIView 约束是否隐式重新激活?

Are UIView constraints implicitly reactivated?

我有一个视图可以根据输入隐藏/显示 Camera 按钮或 Send 按钮。最初看起来像这样:

如果用户开始输入,它会通过将 alpha 设置为 0 来淡出 Camera,禁用 CameratextBox,启用 textBoxSend 按钮之间的约束,在以下淡入淡出:

为了完成这项工作,我在 Storyboard 中设计了所有约束并有选择地激活它们。 几乎 有效,但有一些问题。

  1. 所有约束都存在于 Storyboard 中,这会生成构建警告。有没有办法摆脱这个警告? IE,指定但禁用某些约束?
  2. 即使我在 viewDidLoad 中禁用了 Send 按钮的约束,只要我调用 self.view.layoutIfNeeded() 在该方法中,它们重新启用了我的所有约束,导致控制台上出现过度约束错误消息。
  3. 当我输入时,CameraSend 按钮会正确地淡入淡出,并且约束会导致 textBox 从左到右再返回动画。但是,当我旋转设备时,所有约束都会自发地重新启用,即使我重写 willTransitionToTraitCollection 并在该方法退出时验证它们是否正确。我该如何防止这种情况?

非常感谢任何帮助!

还没有答案,但我需要一个解决方法并找到了一个很好用的方法。

而不是 activate/deactivate 约束,我发现我可以像这样一次自动布局所有元素:

并为 Camera 按钮右约束和 alpha 以及 Send 按钮左约束和 alpha 设置动画。我对元素进行排序,以便最后绘制文本字段,并且可以使用适当的约束设置覆盖其中一个以隐藏它:

viewDidLoad 中,我捕获了 Camera 的 Interface Builder 右约束和 [=26] 的左约束=]发送按钮。为了使 Send 按钮消失,我将其 alpha 从 1 设置为 0,并将其左约束设置为 -sendButton.frame.width。要使 Send 按钮出现动画并使 Camera 按钮消失,我执行相反的操作 - 为 Send[= 设置动画38=] alpha 从 0 到 1 并恢复其原始左约束,同时将 Camera 的右约束动画化为 -cameraButton.frame.width 及其各自的 alpha 从 1 到 0。

这似乎很有效。也就是说,我仍然想知道是否有通过激活和停用约束来解决此问题的方法。