満たされないレイアウト


システムが現在の制約のセットに対する有効な解決策を見つけられない場合、満たされないレイアウトが発生します。2 つ以上の必須制約が同時に真にはならないため、矛盾します。


満たされない制約の特定


多くの場合、Interface Builder は設計時に矛盾を検出できます。このような場合、Interface Builder はいくつかの方法でエラーを表示します。


注意:

Interface Builder が提供する即時フィードバックにより、有効なレイアウトを作成するのがはるかに簡単になりますが、考えられるレイアウトエラーをすべて見つけることができるとは限りません。


たとえば、Interface Builder はキャンバスの現在のサイズでのみ矛盾を検出します。ただし、一部の矛盾は、ルートビューが特定のポイントを超えて拡大または縮小された場合 (またはコンテンツが特定のポイントを超えて拡大または縮小した場合) にのみ発生します。Interface Builder はこれらのエラーを検出できません。


したがって、Interface Builder が特定するすべての問題を常に修正する必要がありますが、明らかなエラーを修正するだけでは不十分です。引き続き、サポートしようとするスクリーンサイズ、向き、動的タイプサイズ、および言語の全範囲にわたって実行時のテストを実行する必要があります。




システムが実行時に満たされないレイアウトを検出すると、以下の手順を実行します。


  1. 自動レイアウトは、矛盾する制約のセットを識別します。

  2. 矛盾する制約の 1 つを解除し、レイアウトをチェックします。システムは、有効なレイアウトが見つかるまで制約を解除し続けます。

  3. 自動レイアウトは、矛盾と解除された制約に関する情報をコンソールに記録します。


この代わりになるシステムは、ユーザーに意味のある何かを提示しようとしながら、アプリを続行させます。ただし、制約を解除する影響は、レイアウトごと、またはビルドごとに大きく異なります。


多くの場合、不足している制約は目に見える影響を与えない場合があります。ビュー階層が完全に期待どおりに表示されます。他の場合では、制約がないために、ビュー階層のセクション全体が誤った場所に配置されたり、サイズが誤ったり、完全に消えたりすることがあります。


エラーが明らかな影響を与えない場合は、エラーを無視したくなることがよくあります。結局のところ、アプリの動作は変更されません。ただし、ビュー階層または SDK に何か変更を加えると、一連の解除された制約が変更され、明らかに壊れたレイアウトが突然作成されます。


したがって、満たされない制約エラーを検出したら、常に修正してください。テスト中に自明ではないエラーを確実にキャッチするには、UIViewAlertForUnsatisfiableConstraints にシンボリックブレークポイントを設定します。


満たされない制約の防止


満たされない制約は比較的簡単に修正できます。システムは、満たされない制約が発生すると通知し、矛盾する制約のリストを提供します。


エラーについて知ったらすぐに、解決策は通常非常に簡単です。制約の 1 つを削除するか、オプションの制約に変更してください。


ただし、さらに詳しく調べる価値があるいくつかの一般的な問題があります。


前:エラーの型 次:あいまいなレイアウト














目次
Xcode の新機能

  • 始めましょう

  • 自動レイアウトガイド全メニュー

  • 自動レイアウトレシピ集

  • 自動レイアウトのデバッグ

  • エラーの型
  • 満たされないレイアウト
  • 満たされない制約の特定
    満たされない制約の防止
  • あいまいなレイアウト
  • 論理的なエラー
  • デバッグの秘訣とヒント

  • 高度な自動レイアウト

  • 付録

  • 改訂記録











  • トップへ









    トップへ









    トップへ









    トップへ









    トップへ









    トップへ









    トップへ









    トップへ









    トップへ









    トップへ









    トップへ









    トップへ









    トップへ









    トップへ









    トップへ









    トップへ