iOS定位处理约束冲突

作者: WenBo丨星空灬 | 来源:发表于2018-06-10 14:18 被阅读66次

前言

在做项目的时候,无意间看到自动布局约束警告,开始也也觉得没什么,虽然有警告,但并不影响UI展示效果。但是越来越有代码洁癖的我,也忍受不了控制台输出一大堆约束警告Log,于是就查阅如何定位解决约束冲突,同时自己也记录下来。下面开始介绍具体操作步骤吧。

一、添加UIViewAlertForUnsatisfiableConstraints断点

  • 添加Symbolic Breakpoints
    屏幕快照 2018-06-04 下午2.44.35.png
  • 编辑断点symbol填入
UIViewAlertForUnsatisfiableConstraints
  • 添加控制台打印action
po [[UIWindow keyWindow] _autolayoutTrace]
屏幕快照 2018-06-04 下午2.44.50.png

二、定位约束警告冲突

  • 添加好断点之后,当界面有约束冲突,就会触发断点,控制打印如下:
[LayoutConstraints] Unable to simultaneously satisfy constraints.
    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:0x604000ab04a0 UIButton:0x7faf99f04010.width == 40>,
    <MASLayoutConstraint:0x604000ab66e0 UIButton:0x7faf99f04010.left == CYBButtonView:0x7faf99f83360.left + 10>,
    <MASLayoutConstraint:0x604000abaa00 UILabel:0x7faf99f5f8e0.left == UIButton:0x7faf99f04010.right>,
    <MASLayoutConstraint:0x604000abd580 UILabel:0x7faf99f5f8e0.left == CYBButtonView:0x7faf99f83360.left + 15>,
)

Will attempt to recover by breaking constraint 
<MASLayoutConstraint:0x604000ab04a0 UIButton:0x7faf99f04010.width == 40>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
  • 根据提示,找到约束有问题的控件地址0x7faf99f04010,然后全局搜索,就能找到具体是哪个控件
  • 如果控制台打印不够直观看出是哪个控件约束有问题,我们可以通过 LLDB命令工具chisel定位寻找。

三、解决冲突

通常解决冲突的方法有:

  • 删除多余约束
  • 修改约束优先级

参考

1、How to trap on UIViewAlertForUnsatisfiableConstraints?

相关文章

  • iOS定位处理约束冲突

    iOS定位处理约束冲突[https://juejin.im/post/6844903618722660365]

  • 快速定位Mas的约束冲突

    iOS定位处理约束冲突- 简书 安装并搭建: facebook/chisel 1. brew update(也可以...

  • iOS定位处理约束冲突

    前言 在做项目的时候,无意间看到自动布局约束警告,开始也也觉得没什么,虽然有警告,但并不影响UI展示效果。但是越来...

  • iOS 快速定位约束冲突

    快速定位约束冲突一般简单界面冲突,我们很容易根据提示找到对应的 View, 但是当你视图层次很深(比如使用 Col...

  • 定位约束冲突

    平时开发中会遇到约束冲突,尤其是你的项目页面较多,你看到那堆约束冲突的信息,想想都头大 办法 使用lldb 0x...

  • iOS Masonry使用总结

    Masonry布局定位约束冲突 视图布局添加约束的时候,有的时候会报一对约束冲突:Probably at leas...

  • iOS开发 快速定位约束冲突位置

    开发过程中遇到约束冲突的报错: 1.先点击Debug View Hierarchy 2.打印页控件层级和地址 Ob...

  • iOS约束冲突问题

    在TableViewCell自适应高度的时候,报一大堆约束冲突错误,可尝试调整最后一个试图对cell的约束级别

  • iOS 约束冲突解决

    AutoLayout使用起来方便快捷,但是当我们的约束设置出现冲突的时候就是非常蛋疼的时候了,下面说说我解决约束冲...

  • ios 约束冲突NSAutoresizingMaskLayout

    在手撸约束的时间,经常会碰到类似的约束警告,其实对布局显示是没有影响的,但是看到这个警告真是蛋疼的要死啊,整个人的...

网友评论

    本文标题:iOS定位处理约束冲突

    本文链接:https://www.haomeiwen.com/subject/byxysftx.html