1

自動レイアウトを使用するウィンドウで、次のコードを実行すると、自動レイアウトの「制約を同時に満たすことができません」という例外が発生します。

  [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 のツールバーのどこにも手動で指定された制約がないので、ここからどこへ行けばいいのかわかりません..

ツールバー項目がツールバーに挿入される限り、すべてが最終的に正常に機能します。

4

1 に答える 1

4

FWIW - たまたまフレキシブル スペース アイテムであった (事前構成された) ツールバーの最後のアイテムを削除した後、例外はなくなりました。

ここで、すべてのツールバー項目を中央に配置する方法を見つけなければなりません..

(これは 10.8/10.9 未満です)

于 2014-05-03T09:57:56.323 に答える