有时候我们在用autolayout布局的时候难免会遇到有约束冲突的情况,当出现约束冲突,Xcode的控制台就会把相关的警告信息打印出来,这相当碍眼,以前遇到这种情况很困扰,现在写下我的处理方法:
1、打一个断点,选择Symbolic Breakpoint,然后输入UIViewAlertForUnsatisfiableConstraints
2、在出现约束警告的控制器(ViewController)的ViewDidAppear方法打断点
3、当ViewDidAppear断点的时候,把页面所有元素打印出来。具体的打印语句:po [[UIWindow keyWindow] _autolayoutTrace]
4、让ViewDidAppear断点过去,然后就会陆续出现到刚刚第1步时候的发生约束警告的断点。这些约束警告都会告诉我们,哪个控件的约束有警告,并打印有该控件的内存地址。我们把地址复制,在第3步时候打印出来的全局页面控件中匹配。就能找到具体是哪个控件的约束出现了问题。
5、找出了有约束警告的控件,就可以去检查该控件的约束代码。进行相应的修改
6、当然还有其他方式找到这个有约束问题的控件。如expr ((UIView *)0x7f88acc2050).backgroundColor = [UIColor redColor]
网友评论