2015-09-15 16 views
5

私はこのような類似の質問をすべて読んだので、私は失われてしまいます。私は次のエラーを取得しています:これはどのようなレイアウトの制約ですか?

2015-09-14 22:59:40.455 guess-who[60143:9602686] 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:0x7c0f8e30 UIImageView:0x7b6efb60.top == _UILayoutGuide:0x7c0f67a0.top>", 
    "<_UILayoutSupportConstraint:0x7c0f8ae0 V:[_UILayoutGuide:0x7c0f67a0(0)]>", 
    "<_UILayoutSupportConstraint:0x7c0f0070 _UILayoutGuide:0x7c0f67a0.bottom == UIView:0x7c0f65e0.bottom>", 
    "<NSAutoresizingMaskLayoutConstraint:0x7b6f6130 h=--& v=--& UIImageView:0x7b6efb60.midY == + 204>", 
    "<NSAutoresizingMaskLayoutConstraint:0x7b6f6160 h=--& v=--& V:[UIImageView:0x7b6efb60(220)]>", 
    "<NSLayoutConstraint:0x7b6f6dc0 'UIView-Encapsulated-Layout-Height' V:[UIView:0x7c0f65e0(518)]>", 
    "<NSAutoresizingMaskLayoutConstraint:0x7b6f6e20 h=-&- v=-&- 'UIView-Encapsulated-Layout-Top' V:|-(0)-[UIView:0x7c0f65e0] (Names: '|':UIView:0x7c0effc0)>" 
) 

Will attempt to recover by breaking constraint 
<_UILayoutSupportConstraint:0x7c0f0070 _UILayoutGuide:0x7c0f67a0.bottom == UIView:0x7c0f65e0.bottom> 

私は私が正常に解決してきた他の制約の束のためにこれを得ているが、この1つは私を遊説しています。私はUILayoutSupportConstraintが何であるか分からない。ドキュメントは非常に徹底的ではありません。私はビューデバッガを見て、UIView:0x7c0f65e0は私のメインビューを参照しているようです(何らかの理由でブランクビューの子ですか?)。私は0x7c0f67a0で何かを見つけることができませんが、それはLayoutGuideを参照しているように見えます、彼らの底は平等でなければならないと言っています。私はこれを理解するために他にどのようなツールが利用できるのかよく分かりません。

EDIT:ビューデバッガの使用

、私はのソースを知っているどちらも、これら2つの制約のいずれかに絞らました:

enter image description here

私はできませんこれらのいずれかが設定されている場所を探します。みんなの最初の提案は、translatesAutoresizingMaskIntoConstraintsをfalseに設定することですが、それはレイアウト全体を破壊し、私はそれを修正する方法がわかりません。

+0

プロジェクト全体を確認できますか?それは自動レイアウトに関するものです。 –

+0

具体的に何を表示する必要がありますか? – thumbtackthief

+0

あなたのストーリーボード。私はあなたにプルリクエストを送ることができるので、githubレポでそれを押してください。 –

答えて

-4

次の行を使用してください。それはあなたを助けるかもしれません。あなたの積層要素のいくつかは、明示的な高さ/幅セット(PlayAgain、猫、フレーム)を持たず、画像の内容をオフに基づいているため

[view setTranslatesAutoresizingMaskIntoConstraints:NO]; 
+0

私はこれを試しました(まあ、スウィフト同等)と私のレイアウト全体を完全に駄目です。 – thumbtackthief

+2

これは質問に答えることはできません、それはコメントでなければなりません。 – JAL

+0

それは助けにはならず、Obj-Cにあります。 – thumbtackthief

2

無効translatesAutoresizingMaskIntoConstraintsは、レイアウトを難破船。

あなたのサンプルプロジェクトはすぐには実行できませんので、ランタイムレイアウトを調べることはできません。しかし、私はこれらの要素の高さを指定して、自動制約が少なくなるようにすることから始めます。また、実行時に多くの制約を変更するように見えるので、互いに競合する制約を変更することには注意が必要です。拘束定数の操作を開始する前にレイアウトが満足できることを確認してください!

8

また、あなたのALログは読みやすくするために、あなたのビューにアクセス識別子と制約識別子を追加することを検討できます。InterfaceBuilderで

constraintVariableName.identifier = “constraintVariableName”;

、インスペクタに識別子プロパティを使用します。

self.loginButton.accessibilityLabel = NSLocalizedString("LoginButtonAccessibilityLabel", @"");

これらのIDは、あなたがIDSでのUIView、UIImageViewとUIConstraintのようなものを交換し、上記の掲示など、ログになってしまいます。

3

Superviewとの関係でイメージビューに制約があるようです。 UILayoutGuide.bottomの制約を満たすために、制約が壊れています。 には、より多くの、または不要な制約が追加されているため、必要ではありませんでした。壊れてばかりいる

制約です:

  1. UILayoutGuide.top = UIView.top
  2. UILayoutGuide。高さ= 0
  3. UILayoutGuide.bottom = UIView.bottom
  4. UIImageView高さの制約
  5. UIImageView Y位置
  6. UIViewの高さの制約
  7. あなたが与えているのUIView上から垂直間隔が '0' が、不足している下/高さの制約。

、高さ(220)とUIImageview 750に1000〜高制約優先順位を変更する高さのUIView(518)してみてください。

また、あなたはそれが可能であれば、良いアイデアのためのgitでデモを添付してください "<NSAutoresizingMaskLayoutConstraint:0x7b6f6e20 h=-&- v=-&- 'UIView-Encapsulated-Layout-Top' V:|-(0)-[UIView:0x7c0f65e0] (Names: '|':UIView:0x7c0effc0)>"

のために下の制約をチェックする必要があります。

希望します。

+0

です。これは役に立ちますが、_where_制約3と4が割り当てられているか、優先度を変更する方法を見つけることができません。私は、私のViewControllerの制約を使っていくつかの作業を行いますが、関連するものは何も表示されません。 (とにかくコメントアウトしたときにエラーが出る) – thumbtackthief

+0

@thumbtackthief - 最初にビューを選択する必要があります。 UIImageView Heightの4番目の制約について考えてみましょう。必要なのは、UIImageViewを選択し、xCodeの右側にあるユーティリティパネルに行き、Show Size Inspectorを選択するだけです。そこには、あなたがあなたの意見に与えた制約があります。優先度を変更する制約をダブルタップします。 –

+1

@thumbtackthief - 下のレイアウトガイドの第2に、すべての下のレイアウトガイドを確認する必要があります。これはストレート水平線になります。また、すでに2つの制約を選択しているドキュメントアウトラインパネルから選択することもできます。 1つのConstraintを選択すると、Size InspectorでConstant Value、Priority、およびMultiplierが表示されます。 –

関連する問題