在使用自动布局的窗口中,以下代码会导致自动布局"无法同时满足约束"异常:
[self.toolbar insertItemWithItemIdentifier:@"MyID" atIndex:2];
异常详细信息如下:
2014-04-25 17:31:41.354 AppName[5100:303] Unable to simultaneously satisfy constraints:
(
"<NSAutoresizingMaskLayoutConstraint:0x108adef10 h=--& v=--& V:[NSToolbarItemViewer:0x101d3ef80(5)]>",
"<NSAutoresizingMaskLayoutConstraint:0x108ade420 h=--& v=-&- V:|-(10)-[_NSToolbarSpace:0x101d37ae0] (Names: '|':NSToolbarItemViewer:0x101d3ef80 )>",
"<NSAutoresizingMaskLayoutConstraint:0x108ade3c0 h=--& v=-&- V:[_NSToolbarSpace:0x101d37ae0]-(11)-| (Names: '|':NSToolbarItemViewer:0x101d3ef80 )>"
)
Will attempt to recover by breaking constraint
<NSAutoresizingMaskLayoutConstraint:0x108ade420 h=--& v=-&- V:|-(10)-[_NSToolbarSpace:0x101d37ae0] (Names: '|':NSToolbarItemViewer:0x101d3ef80 )>
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.
工具栏项目正好插入到一个灵活的空间项目后面。工具栏的某些部分是在IB中配置的,但我需要动态填充一些按钮。
由于IB工具栏中的任何地方都没有手动指定的约束,我有点不知道从这里到哪里。。
只要将工具栏项插入到工具栏中,一切最终都会正常工作。
FWIW-删除(预配置)工具栏中的最后一个项目后,异常消失,该项目恰好是灵活空间项目。
现在我只需要想办法让所有工具栏项目居中。。
(低于10.8/10.9)