3

我正在使用 Xcode 4.4 并在界面生成器中创建我的视图。当我运行我的应用程序时,我一直收到以下约束错误。

Unable to simultaneously satisfy constraints:
(
    "<NSAutoresizingMaskLayoutConstraint:0x104486db0 h=-&- v=-&- V:[NSView:0x106a33090]-(0)-|   (Names: '|':NSClipView:0x106a0cef0 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x104486e10 h=-&- v=-&- V:|-(15)-[NSView:0x106a33090]   (Names: '|':NSClipView:0x106a0cef0 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x1002da350 h=--& v=--& V:[NSClipView:0x106a0cef0(672)]>",
    "<NSLayoutConstraint:0x106a11ba0 V:[NSView:0x1044eb990]-(657)-|   (Names: '|':NSView:0x106a33090 )>",
    "<NSLayoutConstraint:0x1044d68d0 V:|-(270)-[NSView:0x1044eb990]   (Names: '|':NSView:0x106a33090 )>",
    "<NSLayoutConstraint:0x100271040 V:[NSView:0x1044eb990(245)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x100271040 V:[NSView:0x1044eb990(245)]>

Set the NSUserDefault NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints 
to YES to have -[NSWindow visualizeConstraints:] automatically called when this happens.
And/or, break on objc_exception_throw to catch this in the debugger.

关于如何解决这个问题的任何建议?

谢谢

4

2 回答 2

6

对于您打算约束的每个视图,请执行以下操作:

[view setTranslatesAutoresizingMaskIntoConstraints:NO];

这将摆脱日志中的“NSAutoresizingMaskLayoutConstraint”部分。

于 2012-08-23T01:25:05.587 回答
2

还有一种方法可以在不编写代码的情况下解决这个问题。

在情节提要中,选择您的超级视图。在 Attributes Inspector 中,取消选中“Autoresize Subviews”复选框,如下所示。

Xcode 5 截图

这将添加autoresizesSubviews="NO"到情节提要 XML 文件中。在我的例子中,XML 已经包含了translatesAutoresizingMaskIntoConstraints="NO",但是,这并没有阻止自动布局创建NSAutoresizingMaskLayoutConstraints。

注意:也许我的回答仅适用于Xcode 5,因为我无法检查 Xcode 4.4 是否已经有此复选框。但由于谷歌在搜索时仍然会出现这个 SO 问题NSAutoresizingMaskLayoutConstraint,它可能会使某人受益。

于 2014-01-09T10:42:45.650 回答