iOS:无法同时满足约束

Posted

技术标签:

【中文标题】iOS:无法同时满足约束【英文标题】:iOS: Unable to simultaneously satisfy constraints 【发布时间】:2014-06-29 01:17:04 【问题描述】:

我已经看到了对这个问题的普遍反应,即没有正确设置约束。但是,我已经解决了 Interface Builder 中的所有歧义,并且所有约束看起来都还可以。我不确定接下来要检查什么。我什至不知道它是从哪里来的。我没有在代码中设置任何约束。

我能做些什么来弄清楚它在哪里形成? 如果 Interface Builder 没有报告任何歧义,可能是什么原因?

具体错误如下:

2014-06-28 19:54:36.070 Prayer Feed[4497:60b] 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. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x178290360 H:[UIImageView:0x13ee32490(20)]>",
    "<NSLayoutConstraint:0x1782904f0 UITableViewCellContentView:0x178166840.centerX == UIImageView:0x13ee32490.centerX + 62>",
    "<NSLayoutConstraint:0x178290540 H:|-(52)-[UIImageView:0x13ee32490]   (Names: '|':UITableViewCellContentView:0x178166840 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x170286d60 h=--& v=--& H:[UITableViewCellContentView:0x178166840(247)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x178290360 H:[UIImageView:0x13ee32490(20)]>

我知道代码中的两个地方我的 UIImageView 被限制为 20x20,但同样,IB 告诉我一切都很好。

【问题讨论】:

【参考方案1】:

这是问题所在:

<NSAutoresizingMaskLayoutConstraint:0x170286d60 h=--& v=--& H:[UITableViewCellContentView:0x178166840(247)]>

这个面具需要关闭。

我认为默认情况下,对于有约束的 IB 元素,掩码是关闭的。所以我假设你在代码中做了一些事情。你可以用这样的代码关闭它:

contentView.translatesAutoresizingMaskIntoConstraints = NO

如果这真的只是 IB,那么我想知道您在创建表格单元格时使用了什么代码。

【讨论】:

这很有帮助,虽然我还没有做到。 Mutual Mobile 的第三方控制MMDrawerController 似乎是罪魁祸首。我暂时从我的项目中删除了该控件,问题就消失了。那个,或者它是我的一个单元格显示在那个控制器中——这更有可能是这种情况。 :( 果然,在我的表格单元格子类中添加该行会使错误消失,但现在我的单元格看起来不正确。他们需要约束。我将不得不对此进行更多研究。我是新来的约束,所以看起来我需要做更多的阅读。 MMDrawerController 是一个指示面具需要在那里的人。它正在做一些居中的事情,将遮罩设置为 NO 会使内容偏离中心。 在侧边栏 (MMDrawerController) 的 tableviewcell 笔尖之一中,图像视图具有“对齐中心 X”约束。当我让 IB “添加缺少的约束”时,我没有意识到这一点。删除它,约束仍然是蓝色的(好),重新运行,瞧,没有更多的错误。谢谢,@Departamento B。

以上是关于iOS:无法同时满足约束的主要内容,如果未能解决你的问题,请参考以下文章

iOS 11:“无法同时满足约束”

无法同时满足约束 iOS

iOS:在 segue 中无法同时满足约束

如果设置隐藏,iOS UIStackView 无法同时满足约束

iOS 8 自定义键盘:更改高度而不发出警告“无法同时满足约束...”

无法使用 uiimageview 同时满足 uitableviewcell 中的约束