- Masonry布局定位约束冲突
视图布局添加约束的时候,有的时候会报一对约束冲突:
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
"<MASLayoutConstraint:0x28244a340 UILabel:0x13b80b190.top == 。。。
有的时候,通过控制台打印,能够大致看出哪个子控件出现了问题,但是当视图控件和层级比较多时,就难以分辨。
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
这个时候我们可以通过添加断点的方式,在查看定位约束冲突。步骤:
添加Symbolic Breakpoint
在symbol栏添加 UIViewAlertForUnsatisfiableConstraints
在Action栏 添加po [[UIWindow keyWindow] _autolayoutTrace]
此时重新运行工程,打开出现约束冲突的页面,控制台就会打印出视图各层级以及地址,通过约束冲突的控件地址对比,就能找到相应的视图控件。
NSAutoresizingMaskLayoutConstraint 约束导致的约束冲突:self.translatesAutoresizingMaskIntoConstraints = NO;
- Masonry约束优先级的设置
开发的时候,有的时候会遇到一行出现两种文本展示框,约束添加不好,就会达不到想要的效果。
通过以上代码,可以设置在同一行的文本框优先展示哪一个文本框的内容。然后可以根据现有项目的需要,来进行设置。
效果如下: