关于autolayout的debug警告

2016-05-24  本文已影响128人  Jin丶hy

今天在看之前别人写的autolayout,实在是忍受不了console弹出的一大堆的autolayout警告,于是就开始折腾了。

console的报错

入正题,对于

Unable to simultaneously satisfy constraints.

这类的警告就是控件之间的constraints有冲突了,首先上面截图的警告的意思就是

影响constraints

小括号里面的constraints(如上图-“影响constraints“ )与被影响的constraints(如下图-”被影响的constraints“)有冲突

被影响的constraints

我们可以通过修改 ”影响constraints“ 中的constraints来避免冲突。

解决步骤:

1.在xcode里面增加一个breakpoint来寻找报错的constraints所涉及的控件。 参考:http://staxmanade.com/2015/06/debugging-ios-autolayout-issues/

2.当你找到”被影响的constraints“里面的控件所在的树。

po [[0x7f83d0587450 superview] recursiveDescription]

控件树

找到 0x7f83d0587450 这个地址所指的控件。(在HomeFunctionView 的类里面有警告)

V:[UIView:0x7f83d0587450]-(1)-[UIView:0x7f83d2903b40] 

这个constraints的意思是,在垂直的方向上[UIView:0x7f83d0587450] 与[UIView:0x7f83d2903b40]中间间隔为1;

同理:尚未所指的”影响constraints“

V:|-(0)-[UIView:0x7f83d0587450] 

//在垂直的方向上 [UIView:0x7f83d0587450] 与 父view 等高;

UIView:0x7f83d0587450.height == 0.477419*HomeFunctionView:0x7f83d053a1a0.height  

//UIView:0x7f83d0587450的高度 等于父view的0.477419

UIView:0x7f83d2903b40.bottom == HomeFunctionView:0x7f83d053a1a0.bottom

//UIView:0x7f83d2903b40的底边和父view的底边相等

UIView:0x7f83d2903b40.height == 0.516129*HomeFunctionView:0x7f83d053a1a0.height

//UIView:0x7f83d2903b40的高度等于父view的0.516

V:[UIView:0x7f83d0587450]-(1)-[UIView:0x7f83d2903b40]>

//在垂直的方向上[UIView:0x7f83d0587450] 与[UIView:0x7f83d2903b40]中间间隔为1;

V:[HomeFunctionView:0x7f83d053a1a0(200.581)]

//父view 的高度是200.581

经过自己重新查看constraints 发现

UIView:0x7f83d2903b40.bottom == HomeFunctionView:0x7f83d053a1a0.bottom //UIView:0x7f83d2903b40的底边和父view的底边相等

UIView:0x7f83d2903b40.height == 0.516129*HomeFunctionView:0x7f83d053a1a0.height  //UIView:0x7f83d2903b40的高度等于父view的0.516  

这两个constraints导致报警告。

删除下面这个constraints 就可以了。

UIView:0x7f83d2903b40.bottom == HomeFunctionView:0x7f83d053a1a0.bottom //UIView:0x7f83d2903b40的底边和父view的底边相等

上一篇下一篇

猜你喜欢

热点阅读