找出哪个视图打破了约束

Find which view is breaking constraints

我遇到自动布局问题,出现 "Unable to simultaneously satisfy constraints." 错误。

现在我已经为我的所有约束添加了标识符,但是,冲突约束似乎不是我创建的,因为我只在几个冲突约束中看到我的标识符。

我的问题是,如果我有这样的约束描述:

<NSLayoutConstraint:0x7f8dca498410 V:[UIView:0x7f8dca493010]-(0)-[UILabel:0x7f8dca493610]>

如何找出这是哪个 UIView 和哪个 UILabel。我知道我可以做 po 0x7f8dca493010,但是我怎样才能打印我的视图的属性,最好是打印例如我给 IB 中的视图起的名字?

使用此命令打印所有视图

(lldb) po [[[UIApplication sharedApplication] keyWindow] recursiveDescription]

然后命令+F查找地址

然后,借助左侧的View Debugging和log定位View

此外, 如果你熟悉LLDB,你可以执行任何你想要的代码

lldb) e UIView *$view = (UIView *)0x7fb3b248d860
(lldb) po [$view superview]
<UIView: 0x7fb3b248d4e0; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x7fb3b248cca0>>