以编程方式应用自动布局约束时无法同时满足约束
Posted
技术标签:
【中文标题】以编程方式应用自动布局约束时无法同时满足约束【英文标题】:Unable to simultaneously satisfy constraints while applying auto layout constraints programatically 【发布时间】:2016-04-26 10:51:04 【问题描述】:无法同时满足约束。 以下列表中的至少一个约束可能是您不想要的。
试试这个:
(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']>
【问题讨论】:
autolayoutconstraints.com 【参考方案1】:这意味着从各个角度来看,您的约束条件都不能满足。例如,如果您有 50x50 尺寸的视图。它位于精确的中心。现在,如果您在容器中提供诸如水平中心之类的约束,并且像始终保持0
与前沿(左边缘)的距离之类的前导约束,那么它会产生歧义。它不能同时满足这两个约束。它是否可以保持在中心,或者它可以与前沿管理 0 距离但两者都不能满足,所以这会产生类似 unable to simultaneously satisfy constraints
的错误。
因此,在您的情况下,请检查您的所有相关约束。如果任何约束不明确,则将其删除,并且缺少任何约束,然后添加它。
希望这会有所帮助:)
【讨论】:
【参考方案2】:这是使用自动布局时在控制台中看到的常见消息。这是由于您在为视图对象创建约束时所犯的一些错误造成的。仔细检查每个约束。此时视图可能会正确渲染。但是在具有不同屏幕尺寸和方向的不同设备上,视图可能会中断。您可能错过了视图的一两个约束,为视图添加了模棱两可的约束等。
【讨论】:
以上是关于以编程方式应用自动布局约束时无法同时满足约束的主要内容,如果未能解决你的问题,请参考以下文章