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.

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

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容