我正在通过在线教程进行操作。我一直在一步一步地执行,并在运行模拟器时在调试器中收到消息,说我有冲突的约束。我不相信有冲突的限制,所以我想我会伸出第二个意见。调试器中的冲突限制错误消息
下面是具有冲突约束的视图控制器的屏幕截图。
View Controller from Xcode Project
下面是在调试器中的错误消息的截屏:它看起来像它与停止按钮的宽度约束的问题,但我不能从错误信息告诉如何解决它。
任何帮助,不胜感激!
我正在通过在线教程进行操作。我一直在一步一步地执行,并在运行模拟器时在调试器中收到消息,说我有冲突的约束。我不相信有冲突的限制,所以我想我会伸出第二个意见。调试器中的冲突限制错误消息
下面是具有冲突约束的视图控制器的屏幕截图。
View Controller from Xcode Project
下面是在调试器中的错误消息的截屏:它看起来像它与停止按钮的宽度约束的问题,但我不能从错误信息告诉如何解决它。
任何帮助,不胜感激!
看起来你设置停止按钮宽度= 64,但实际您没有为父视图设置宽度,因此它会自动设置为0或343. 单击停止按钮时是否获得任何红色约束?
我点击按钮时唯一的约束是设置的宽度约束。我试图将包含停止按钮的堆栈视图的约束宽度设置为64,但这并没有什么好处。我仍然收到一个很长的错误信息。 –
我能找到答案。我必须在停止按钮的宽度约束上将优先级更改为999。调试消息是说下面的约束是冲突的。
(
"<NSLayoutConstraint:0x600000096080 UIButton:0x7fb874e157d0.width == 64 (active)>",
"<NSLayoutConstraint:0x610000097ac0 'fittingSizeHTarget' UIStackView:0x7fb874e155d0.width == 0 (active)>",
"<NSLayoutConstraint:0x600000096210 'UISV-canvas-connection' UIStackView:0x7fb874e155d0.leading <= UIButton:0x7fb874e157d0.leading (active)>",
"<NSLayoutConstraint:0x600000097ca0 'UISV-canvas-connection' UIStackView:0x7fb874e155d0.centerX == UIButton:0x7fb874e157d0.centerX (active)>"
)
然后它说它需要打破停止按钮的宽度约束,以解决冲突的约束问题。
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x600000096080 UIButton:0x7fb874e157d0.width == 64
(active)>
将优先级降至999可防止调试消息出现,并保持按钮是我想要的。
我在这里找到了解决方案的信息:
[从链接] 这些限制,上一次是由系统创建。你不能改变它。此外,它与第一个约束产生了明显的冲突。如果你的超级看法只有320点宽,你永远不会有400点宽的标签。幸运的是,您不必摆脱第一个约束。如果您将其优先级降至999,系统仍会尝试提供所选的宽度 - 尽可能接近,同时仍然满足其他约束条件。
首先删除高度:64从最后一个堆栈查看 –
@jaydeepVyas然后底部堆栈视图将占用屏幕的一半。 –
我已经给出了下面的答案,参见 –