在以编程方式应用自动布局约束时无法同时满足约束

时间:2016-04-26 10:51:04

标签: ios objective-c xcode nslayoutconstraint

无法同时满足约束条件。     可能至少以下列表中的一个约束是您不想要的约束。

试试这个:

(1)看看每个约束,并试图找出你不期望的;

(2)找到添加了不需要的约束或约束的代码并修复它。 (

"<NSLayoutConstraint:0x7f844b716390 H:|-(30)-[UIButton:0x7f844b4be3c0'LOGIN']   (Names: '|':UIView:0x7f844b492a80 )>",
    "<NSLayoutConstraint:0x7f844b706ee0 H:[UIButton:0x7f844b4be3c0'LOGIN'(100)]>",
    "<NSLayoutConstraint:0x7f844b705dd0 H:[UIButton:0x7f844b4be3c0'LOGIN']-(80)-[UIButton:0x7f844b4c0520'SIGNUP']>",
    "<NSLayoutConstraint:0x7f844b706f30 H:[UIButton:0x7f844b4c0520'SIGNUP'(100)]>",
    "<NSLayoutConstraint:0x7f844b7147c0 H:[UIButton:0x7f844b4c0520'SIGNUP']-(30)-|   (Names: '|':UIView:0x7f844b492a80 )>",
    "<NSLayoutConstraint:0x7f844b519f70 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7f844b492a80(375)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f844b705dd0 H:[UIButton:0x7f844b4be3c0'LOGIN']-(80)-[UIButton:0x7f844b4c0520'SIGNUP']>

2 个答案:

答案 0 :(得分:2)

这意味着从各个角度来看,你的约束都不满足。例如,如果您有50x50大小的视图。它位于确切的中心。现在,如果你给像容器中的horizo​​ntaly中心这样的约束和前导约束,就像始终与前缘(左边缘)保持0距离那么它会产生歧义。它不能满足这两个约束条件。它是否可以保持在中心位置,或者它可以管理前缘的0距离,但两者都不能满足,因此会产生unable to simultaneously satisfy constraints之类的错误。

因此,在您的情况下,检查您的所有相关约束。如果任何约束歧义然后删除它并且缺少任何约束,则添加它。

希望这会有所帮助:)

答案 1 :(得分:0)

这是使用Autolayout时在控制台中看到的常见消息。这是由您在为视图对象创建约束时出现的一些错误引起的。仔细检查每个约束。此时视图可能会正确呈现。但是在具有不同屏幕尺寸和方向的不同设备上,视图可能会中断。您可能错过了视图的一个或两个约束,为视图添加了不明确的约束等。