2017-07-07 33 views
0

我正在通过在线教程进行操作。我一直在一步一步地执行,并在运行模拟器时在调试器中收到消息,说我有冲突的约束。我不相信有冲突的限制,所以我想我会伸出第二个意见。调试器中的冲突限制错误消息

下面是具有冲突约束的视图控制器的屏幕截图。

View Controller from Xcode Project

下面是在调试器中的错误消息的截屏:它看起来像它与停止按钮的宽度约束的问题,但我不能从错误信息告诉如何解决它。

Part of Error Message

任何帮助,不胜感激!

+0

首先删除高度:64从最后一个堆栈查看 –

+0

@jaydeepVyas然后底部堆栈视图将占用屏幕的一半。 –

+0

我已经给出了下面的答案,参见 –

回答

0

尝试你并不需要给约束去年堆栈视图 对于最后一个按钮图像下面的方法,你必须设置内容模式编程中心 enter image description here

+0

使用上面的约束建议,它将所有东西都转移到几乎离开视图控制器的一侧。我的错误信息缩短了。 –

+0

你能给我你的代码吗? –

+0

@Cali_Ranger你可以给我只是你的图片 –

0

看起来你设置停止按钮宽度= 64,但实际您没有为父视图设置宽度,因此它会自动设置为0或343. 单击停止按钮时是否获得任何红色约束?

+0

我点击按钮时唯一的约束是设置的宽度约束。我试图将包含停止按钮的堆栈视图的约束宽度设置为64,但这并没有什么好处。我仍然收到一个很长的错误信息。 –

0

我能找到答案。我必须在停止按钮的宽度约束上将优先级更改为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可防止调试消息出现,并保持按钮是我想要的。

我在这里找到了解决方案的信息:

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/DebuggingTricksandTips.html

[从链接] 这些限制,上一次是由系统创建。你不能改变它。此外,它与第一个约束产生了明显的冲突。如果你的超级看法只有320点宽,你永远不会有400点宽的标签。幸运的是,您不必摆脱第一个约束。如果您将其优先级降至999,系统仍会尝试提供所选的宽度 - 尽可能接近,同时仍然满足其他约束条件。