iOS Masonry使用总结

  1. 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.

" 有的时候,通过控制台打印,能够大致看出哪个子控件出现了问题,但是当视图控件和层级比较多时,就难以分辨。

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
这个时候我们可以通过添加断点的方式,在查看定位约束冲突。步骤:

屏幕快照 2019-12-06 下午3.26.49.png

添加Symbolic Breakpoint

屏幕快照 2019-12-06 下午3.29.09.png

在symbol栏添加 UIViewAlertForUnsatisfiableConstraints

在Action栏 添加po [[UIWindow keyWindow] _autolayoutTrace]

此时重新运行工程,打开出现约束冲突的页面,控制台就会打印出视图各层级以及地址,通过约束冲突的控件地址对比,就能找到相应的视图控件。

屏幕快照 2019-12-06 下午3.34.20.png

NSAutoresizingMaskLayoutConstraint 约束导致的约束冲突:self.translatesAutoresizingMaskIntoConstraints = NO;

  1. Masonry约束优先级的设置

开发的时候,有的时候会遇到一行出现两种文本展示框,约束添加不好,就会达不到想要的效果。

屏幕快照 2019-12-06 下午3.37.21.png

通过以上代码,可以设置在同一行的文本框优先展示哪一个文本框的内容。然后可以根据现有项目的需要,来进行设置。

效果如下:


屏幕快照 2019-12-06 下午3.42.43.png

你可能感兴趣的:(iOS Masonry使用总结)