1

次のエラーが表示されます。

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:0x1600aec0 V:[UIView:0x102021d0]-(0)-|   (Names:    '|':UIView:0x1600a980 )>",
 "<NSLayoutConstraint:0x1600ae80 V:|-(494)-[UIView:0x102021d0]   (Names: '|':UIView:0x1600a980 )>",
"<NSAutoresizingMaskLayoutConstraint:0x1600e8a0 h=-&- v=-&- UIView:0x1600a980.height == UIWindow:0x9e0ea30.height>",
"<NSAutoresizingMaskLayoutConstraint:0x9e2d130 h=--- v=--- V:[UIWindow:0x9e0ea30(480)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x1600aec0 V:[UIView:0x102021d0]-(0)-|   (Names: '|':UIView:0x1600a980    )>

Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in 
<UIKit/UIView.h> may also be helpful.

このエラーを生成するビューには、左/右/上/下の 4 つの制約があり、どれも削除できません。

私が試してみました:

[View setTranslatesAutoresizingMaskIntoConstraints:NO];

結果なし。

これを修正する方法はありますか?

ありがとうございました!

4

2 に答える 2

4

問題は垂直レイアウトにあります。

<NSAutoresizingMaskLayoutConstraint:0x9e2d130 h=--- v=--- V:[UIWindow:0x9e0ea30(480)]>

ウィンドウの自動サイズ変更マスク。固定マージンとサイズ。これは変更できません。

<NSAutoresizingMaskLayoutConstraint:0x1600e8a0 h=-&- v=-&- UIView:0x1600a980.height == UIWindow:0x9e0ea30.height>

自動リサイズ マスク (固定マージン、サイズ変更可能なコンテンツ)。おそらくコントローラーのビューです。高さは480(ウィンドウのサイズに等しくなるように設定) です。ここで修正するものは何もありません。

<NSLayoutConstraint:0x1600aec0 V:[UIView:0x102021d0]-(0)-|   (Names:    '|':UIView:0x1600a980 )>
<NSLayoutConstraint:0x1600ae80 V:|-(494)-[UIView:0x102021d0]   (Names: '|':UIView:0x1600a980 )>

両方の制約が同じビュー ( [UIView:0x102021d0]) で何かを行っており、パラメーターとして同じ 2 番目のビューを持っている( ) ことがわかりますUIView:0x1600a980。2 番目のビューは、コントローラーのビューです。

2 つの制約は、2 番目のビューのエッジからの距離を定義します。1 つ目は底 ( 0) を定義します。2 つ目は top ( 494) を定義します。スーパービューのサイズが の場合、その例外をトリガーする高さが等しいこと480を意味します。[UIView:0x102021d0]-14

修正方法は?さて、494制約を正しい値に変更します。「上」の制約さえ必要ない可能性があります。代わりに固定の高さが必要な場合があります。

問題はどのように発生しましたか?iPhone 5 用の制約を作成してから、iPhone 4 でアプリを実行しようとした可能性があります。xib でシミュレートされたサイズを iPhone 4 に変更すると、すぐに問題が発生するはずです。

于 2013-07-25T09:30:57.447 に答える
0

translatesAutoresizingMaskIntoConstraintsどうやら に設定されているビューがまだありYESます。そうしないと、そのメッセージが表示されません。問題を引き起こしているのは、おそらくビューのスーパービューです。自動サイズ変更マスクも制約に変換されないことを確認してください。

于 2013-07-25T09:10:20.517 に答える