この警告はXcode 6.1で発生します。誰もがこの警告が何を意味し、それで何が起こるかについてのアイデアを持っていますか?どうもありがとう!
以下は、ソースコードで警告が開かれたスクリーンショットです。
警告の原因となっている制約を見つける方法は? Xcodeは、どの制約が問題であるかを教えません。
この警告は煩わしく、Xcode 6.1.1の時点で発生します。主な問題は、警告をクリックしても参照されている制約を簡単に見つけることができないことです。これはバグであり、遅かれ早かれ修正されると思います。
ただし、当面はこの小さな回避策を使用できます。
Reveal in Log
????を選択します... snip ...
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Dlb-cb-nWC: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:6Ze-mO-v5N: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:9av-xw-u1o: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:RPt-Uf-vaZ: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Rnc-4M-7jV: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:epJ-D9-KEF: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:4HC-Gu-01w: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
... snip ...
5/2016のXcodeでは、面倒なことに、restart Xcodeでこの警告をクリアする必要がある場合があります。
紛らわしいことに、同じエラーは無関係の問題によって引き起こされる可能性があることに注意してください(これはAppleバグまたはエラー言語の不適切な使用のようです):IBInspectable
アイテムがあり、 rename Swiftファイル内のそれら。 Xcodeは、古い名前のUserDefinedRuntimeAttributesをnot削除しません。 [IDインスペクター](右パネルのアイテム3)をクリックして、不必要なアイテムを削除します。
このメッセージは、ストーリーボードでビューを非アクティブにしたが、そのビューに基づいて制約を非アクティブにしなかったときにトリガーされます。
たとえば、ボタンを無効にしたが、そのボタンにリンクされている制約がまだある場合。高さや幅などの固有の制約、または別のビューからの距離などの相対的な制約があります。
ビューを参照する各制約をオフにする必要があり、手動で行う必要があります。 Xcodeはここでは過度に保守的であり、あなたのためにそれを行いません。
この解決策は私にとっては有効です。
Xcode 5で開発したプロジェクトからいくつかのアイテムをXcode 6にコピーし、Xcode 6のストーリーボードは複数のレイアウトをサポートしているため、制約ごとに現在の構成にインストールする必要があります。
たとえば、以下のように設定する必要がある制約に、「コンパクトな幅|通常の高さ」を使用しています。
プロジェクトの何百もの制約をすべてチェックして設定し、クリーンにしてビルドすると、警告は最終的に消えます。
詳細な説明
他の答えに問題はありません。 元の警告の言葉遣いに注意を喚起し、これができるいくつかのユースケースを特定したかっただけですワークフローに現れます。
現在の構成で制約参照項目がオフになりました。
つまり、1つ以上の制約で参照されるアイテム(通常は表示されるコントロールまたはカスタムビュー)がオフになっている(無効になっているか、チェックボックスが「インストール済み」にチェックされていない)。たとえば、ストーリーボードのコントロールまたはビューをメインビューの外に移動することを決定した場合(またはサイズクラスで何か面白いことをするときに時々表示される)、コントロールに制約が関連付けられている場合、この警告が表示されることがあります。
推奨されるソリューションとともに:
現在の構成でこの制約をオフにします。
修正する2つのアプローチ
ドキュメントの概要
視覚的に、ストーリーボードでドキュメントアウトラインを開き、メインビューの外側にあるコントロール/ビューを参照するグレーアウトされた制約を探します(アウトラインを広げ、制約をクリックし、属性インスペクターを表示し、マウスで下にすばやくレビューします) 。次に、このコンテキスト(サイズクラス)から制約を削除します。たとえば、私の場合は、後でどこに表示するかを決めるまでコントロールを保持しているだけなので、問題のある制約を完全に削除することを選択しました。しかし、サイズクラスでは、属性インスペクターのインストール済みチェックボックスを使用して、現在のコンテキストから制約をアンインストールするだけです。
Log Navigator/Find Tool
Log Navigatorを引き続き使用して、ストーリーボード上の各オブジェクトに指定された一意の識別子を介して問題のコントロールを見つけることもできます。ログでは、黄色で強調表示されたテキストの直前になり、通常は上記の私の例のように形式を取ります:jvj-mY-DHf
識別子を使用すると、Xcodeの検索ツールを使用して、問題のある制約を見つけて削除(完全に)またはアンインストール(現在のコンテキストに対して)できます。
Xmlとそのシンプルさが好きな場合は、Storyboardをソースコードとして開き、問題のある一意の識別子を見つけて、xmlの適切なブロックを削除することもできます。
私にとっては、「Constraint to margins」オプションがチェックされていない状態で、オブジェクトに(ビューではなく)オブジェクトに新しい制約を設定すると発生します。オプションをチェックすると問題が解決します(デフォルト)。
これが発生する理由の1つは、制約と互換性のないサイズクラスを選択したためです(wAny hAny
は一般的なケースです)。そのような場合は、Interface Builderで異なるサイズクラスを選択するだけで完了です。
私の場合はラベルを選択してから、コントロール+ Xをクリックすると、無効になりますが、何もしません。ビルドすると、警告が表示されます。解決策:ラベルを削除するか、選択したコントロール+ラベルのXを削除します。
私はそれが他の答えのために永続的な制約だと思ったが、それは私が以前に削除したアイテムのためにまだ持っていた「アウトレット」によるものだった。すべきことは:
最悪のシナリオでは、すべてのコンセントを削除して、再び接続するだけです。事件解決!
@ BadCat's answer で説明され、よくガイドされているように、私はステップをたどりました。
BadCats回答の最後のステップの後に実行するステップ:
ステップ1:
Interface Builderで制約を選択し、その目的を念頭に置いて削除しました。
ステップ2
XCodeプロジェクトをビルドすると、警告の数が増えている可能性があります。これは、適切にコンパイルするために必要な制約を削除したためです。それでは、3番目のステップに進んでください!
ステップ3
念頭に置いた制約(削除した制約)を再度追加します。そして、再びそれを再構築してください!
私にとっては、これを行うだけで警告は消えました!これは何人かの人々のためにうまくいくと思います!
原因:
この警告の原因となった問題は理解できたので、IBOutletに接続されたラベルがありましたが、その名前は大文字で始まっていました。そこで、ViewControllerで簡単な文字に名前を変更し、IBで変更するようになりました。過去のIBOutletを削除し、新しく名前を変更したプロパティ名に接続して接続しました。その後、新しい警告が表示されることに気付きました。
最初にこのスレッドで次の answer を試しましたが、役に立ちませんでした!
乾杯!
スタックビューで問題が発生しました。制約を削除して再度追加しても解決しませんでした。クリーニングと再構築は役に立ちませんでした。
私にとっての解決策は、まったく新しいスタックビューオブジェクトを作成することでした。
次に、すべての要素を古いスタックビューから新しいスタックビューに移動します。
古いスタックビューを削除すると、問題が修正されました。
制約を含むこれらのUI要素をすべて削除し、すべて追加し直すと、それらの警告は消えます。とにかく、これは最悪ですが、これを解決する便利な方法です。