gpt4 book ai didi

ios - 无法满足约束时,如何识别 Debug 区域中的 View ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:07:31 26 4
gpt4 key购买 nike

我正在使用 Autolayout 并以编程方式设置约束,但在运行该应用程序时遇到一些无法满足约束的错误,例如:

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x798cd1c0 H:[UIImageView:0x78e03c20(40)]>

我有几个像这样的 UIImageView,我发现很难知道是哪个限制条件被打破了。无论如何设置,比方说,命名标签到 View ,以便在调试区域更好地识别它们?

最佳答案

Xcode的Auto layout已经提供了给constraints设置标识符的功能。使用此功能很容易找到不需要的约束。

要将标识符设置为约束,只需在 Storyboard上选择约束,系统会提示您在尺寸检查器中弹出所选约束属性,如下所示,

enter image description here

为了演示目的,我设计了一个屏幕,其中三个 imageView 垂直对齐,如下所示,

enter image description here

我已将每个 imageView 的固定宽度设置为 240 pts,并将 LeadingSpace 和 TrailingSpace 设置为 40 pts,因此这会在这两个约束之间产生冲突。在将标识符设置为约束之前查看打破约束的日志,

"NSLayoutConstraint:0x7fbce9cb9180 H:[UIImageView:0x7fbce9cbb8c0(240)]>",
"<NSLayoutConstraint:0x7fbce9cbe450 H:[UIImageView:0x7fbce9cbb8c0]-(40)-| (Names: '|':UIView:0x7fbce9cb6320 )",

"NSLayoutConstraint:0x7fbce9cbe4a0 H:|-(40)-[UIImageView:0x7fbce9cbb8c0] (Names: '|':UIView:0x7fbce9cb6320 )",

"NSLayoutConstraint:0x7fbce9c29b30 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7fbce9cb6320(375)]"

设置标识符后,

"NSLayoutConstraint:0x7ff7da44ba70
H:[UIImageView:0x7ff7da448ba0]-(40)-| (Names:
'|':UIView:0x7ff7da448750 )",

"NSLayoutConstraint:0x7ff7da44bac0 H:|-(40)-[UIImageView:0x7ff7da448ba0] (Names:
'|':UIView:0x7ff7da448750 )",

"NSLayoutConstraint:0x7ff7da447d30 'RedImageViewWidth' H:[UIImageView:0x7ff7da448ba0(240)]",

"NSLayoutConstraint:0x7ff7da4206a0 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7ff7da448750(375)]"

读取约束中断日志的技巧是读取数字,在上面你可以看到数字为“240”、“40”和“375”,然后尝试找到具有相同常量值的约束在 Storyboard上,

在我的例子中,日志消息表明,我有 40 磅的前导和尾随空间到 SuperView,同时有 240 磅的宽度,所以自动布局打破了这个宽度限制并将 375 磅的宽度设置为通过具有 40 pts 的前导和尾随空间来根据屏幕尺寸。

希望对您有所帮助。

关于ios - 无法满足约束时,如何识别 Debug 区域中的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36253090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com