• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 15:36:06 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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

我有几个像这样的 UIImageView 并且我发现很难知道是哪个使该约束被打破。无论如何要设置 View 的名称标签,以便在调试区域更好地识别它们?



Best Answer-推荐答案


Xcode 的自动布局提供了一个函数来将标识符设置为约束。使用此功能很容易找到不需要的约束。

要将标识符设置为约束,只需在 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上,

在我的情况下,日志消息表明,SuperView 的前导和尾随空间为 40 pts,同时宽度为 240 pts,因此自动布局打破了这个宽度约束并将 375 pts 的宽度设置为根据屏幕大小,前导和尾随空间为 40 点。

希望这会对您有所帮助。

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap