约束报错、冲突如何定位UI

问题

在使用AutoLayout 或者masonry 布局UI的时候,经常会遇到约束冲突的警告。
例如:图中,我们知道是一个Button的约束冲突了,但是不能很直接的让人知道是哪个Button。

lldb

要是能知道这个Button UIButton:0x12c7f6f30的title是什么,那么我们不就可以在代码中直接搜索该title,定位到代码中的Button?

(lldb) po 0x12c7f6f30
<UIButton: 0x12c7f6f30; frame = (371 0; 33 39.6667); opaque = NO; layer = <CALayer: 0x12c7f6b30>>

(lldb) po ((UIButton *)0x12c7f6f30)
<UIButton: 0x12c7f6f30; frame = (371 0; 33 39.6667); opaque = NO; layer = <CALayer: 0x12c7f6b30>>

(lldb) po ((UIButton *)0x12c7f6f30).titleLabel.text
 nil
(lldb) 

为什么是空?

可能是button没有设置title,而仅仅设置了button的image!那么接下来思路就是:能不能找到这张图片是什么图片?

UIImageView 如何定位图片名字或者预览其内容?

调用UIView的recursiveDescription方法,打印一下button的层级关系!

这里写图片描述

(lldb) po [((UIButton *)0x12c7f6f30) recursiveDescription]
<UIButton: 0x12c7f6f30; frame = (371 0; 33 39.6667); opaque = NO; layer = <CALayer: 0x12c7f6b30>>
   | <UIImageView: 0x12d9087b0; frame = (9.33333 12.6667; 14 14); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x12c7f6cd0>>
   | <UIButtonLabel: 0x12c6e6340; frame = (0 0; 0 0); hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x12d85faf0>>

查看了一下UIImageView的头文件实在无法找到获取UIImageView图片名字的属性或者方法,怎么办?

LLDB技巧:chisel

上网搜索了一下,在lldb中通过chisel能够预览到image的图片内容!

这里写图片描述

(lldb) po 0x12d9087b0
<UIImageView: 0x12d9087b0; frame = (9.33333 12.6667; 14 14); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x12c7f6cd0>>

(lldb) visualize 0x12d9087b0
2016-07-15 18:21:18.240 BMBlueMoonAngel[674:220643] XPC connection interrupted

预览效果:

这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值