博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS定位处理约束冲突
阅读量:6914 次
发布时间:2019-06-27

本文共 1182 字,大约阅读时间需要 3 分钟。

前言

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

一、添加UIViewAlertForUnsatisfiableConstraints断点

  • 添加Symbolic Breakpoints
  • 编辑断点symbol填入
UIViewAlertForUnsatisfiableConstraints复制代码
  • 添加控制台打印action
po [[UIWindow keyWindow] _autolayoutTrace]复制代码

二、定位约束警告冲突

  • 添加好断点之后,当界面有约束冲突,就会触发断点,控制打印如下:
[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. (	
,
,
,
,)Will attempt to recover by breaking constraint
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in
may also be helpful.复制代码
  • 根据提示,找到约束有问题的控件地址0x7faf99f04010,然后全局搜索,就能找到具体是哪个控件
  • 如果控制台打印不够直观看出是哪个控件约束有问题,我们可以通过 LLDB命令工具定位寻找。

三、解决冲突

通常解决冲突的方法有:

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

参考

1、

转载地址:http://jaicl.baihongyu.com/

你可能感兴趣的文章
ThreadLocal 那点事儿
查看>>
JavaScript是如何工作的:深入类和继承内部原理 + Babel和TypeScript 之间转换
查看>>
.net reactor使用教程(一)——界面各功能说明
查看>>
教你在Docker上不到2分钟建立一个多模型数据库!
查看>>
python输入输出语句
查看>>
HTTPS时代的到来是大势所趋!阿里云CDN如何助力企业网站进入HTTPS时代
查看>>
Linux 积极使用swap空间
查看>>
等待事件之Log File Sync
查看>>
php测试kafka
查看>>
js获取两个日期之间时间差(天数)
查看>>
Memcached 简介
查看>>
虚拟化二、Xen虚拟化技术
查看>>
Oracle 11g数据库随系统自动启动与关闭的设置方法
查看>>
git pull force
查看>>
使用new操作符来调用一个构造函数的时候发生了什么
查看>>
交换机配置vlan 访问控制列表
查看>>
Python面向对象之类的成员
查看>>
Win8上iis配置
查看>>
Confluence 6 配置 Office 转换器
查看>>
Grin交易原理详解
查看>>