博客> 浅谈自动布局Autolayout报错那些事儿:Unable to simultaneously satisfy constraints.
浅谈自动布局Autolayout报错那些事儿:Unable to simultaneously satisfy constraints.
2017-09-21 11:25 评论:0 阅读:101 梧桐一叶
AutoLayout
     最近在做的项目,使用了自动布局Autolayout,控制台报出了下面如图的提示,大概知道是控件约束冲突的问题,但是具体还真不知道如何快速查找到具体控件所在位置,通过多方查阅资料,终于弄清楚了这些提示都是什么意思。这个提示虽不至于让程序立即奔溃,但是始终是一个隐患,看着也是极不好的,现整理出来,希望帮助大家少走弯路。![ 关于Unable to simultaneously satisfy constraints的具体控制台输出截图: ]![ Enter your image description here: ](/Users/simmy/Desktop/Pasted Graphic 1.png)(/Users/simmy/Desktop/Pasted Graphic.tiff)

控制台报出下面的错误,一般有两个原因: 1、约束设置错误; 2、忘记设置控件的属性:setTranslatesAutoresizingMaskIntoConstraints 等于NO(false)

   你如果是从代码层面开始使用AutoLayout,报出上面错误的原因就是忘记设置控件的属性:setTranslatesAutoresizingMaskIntoConstraints 等于NO(false) 

如果你的项目是使用xib或者storyboard,在Interface Builder中勾选了Use Auto Layout,IB生成的控件的translatesAutoresizingMaskIntoConstraints属性都会被默认设置NO(false),所以很大可能就是你的控件约束设置错误,下面就详细讲述一下如何找出约束错误的控件,如图 运行时约束展示: 1、在模拟器上运行你的app 2、在Xcode上找到你的xib,点击调试栏上的调试视图层按钮,如图下方红线已圈出 3、鼠标在界面上任意滑动,可以清楚的看到所有视图层,如图

例如,点击First Name Label的Constraints->label.top ,看最右边Layout Constraint中展示了Address,如果这条约束有错的话,这个就是在控制台输出的地址。反过来,通过控制台输出的地址,在这里很快的就能找出对应的控件 参考:https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/DebuggingTricksandTips.html#//apple_ref/doc/uid/TP40010853-CH21-SW1

收藏
1
sina weixin mail 回到顶部