3

Xcode 4.4を使用していて、InterfaceBuilderでビューを作成しています。アプリを実行すると、常に次の制約エラーが発生します。

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

コードを書かずにこれを解決する方法もあります。

ストーリーボードで、スーパービューを選択します。属性インスペクタで、以下に示すように、[サブビューの自動サイズ変更]チェックボックスの選択を解除します。

Xcode5のスクリーンショット

autoresizesSubviews="NO"これにより、ストーリーボードのXMLファイルが追加されます。私の場合、XMLにはすでに含まれていますtranslatesAutoresizingMaskIntoConstraints="NO"が、これによって自動レイアウトによるsの作成が停止することはありませんでしたNSAutoresizingMaskLayoutConstraint

注:Xcode 4.4にすでにこのチェックボックスが付いているかどうかを確認できないため、私の答えはXcode5にのみ適用される可能性があります。しかし、グーグルはまだ検索時にこのSOの質問を出すNSAutoresizingMaskLayoutConstraintので、誰かに利益をもたらすかもしれません。

于 2014-01-09T10:42:45.650 に答える