2012-10-22 12 views
6

したがって、インタフェースビルダーの制約の周りに頭を浮かべることはできません。インタフェースビルダーの制約を扱う

自分で追加することはできません - インターフェイスビルダーは、それが最もよく分かっていると思われます。

私もそれらを取り除くことはできません(私は「ユーザー」制約に変換してから削除できますが、インターフェイスビルダーは同じ制約に置き換えます)。

私は、レイアウトやさまざまな変更(iPhone 5以前のもののビューの作成)を手伝ってくれる制約があると思っていました。また、ポートレートモードからランドスケープモードに移行します。

全く動作しないようです。ビューを追加してスーパービューの一番上に配置すると、Top space to:という制約が設定されます。これはピクセル値になります。これは、短いiPhone 4(または電話が風景に変わった場合)で見ると、これらの要素が自動的に上に移動しないことを意味します。

たとえば、私はカスタムキーボードビューを作成しようとしています。これは、現金レジスタに表示されるようなものです。私はカスタムUIViewサブクラスを作成し、UIViewをインターフェースビルダーに入れました。私は、高さと幅を設定し、それをビューの一番下に配置しました(そこを「クリック」して)。インターフェイスビルダーがTop space toという制約を追加してその高さに置く方法(iphone 5)だから私がiPhone 4で見ると、(画面の一番下の場所に「スナップ」しているので、期待通りに動きませんが)底を切り落とします。

これは私の望むものではありませんが、(上記のように)残念なことに制約を削除することはできません。

どうすればよいですか?私はちょうど2つのnibファイル(iPhone 5と他のiphone用)を作成することができますが、電話機の風景を変えたときに自動ぼかしをしたいときはどうしたらいいですか?そうすることが任意のインターフェイスウィジェットの完全サイズと位置を決定するために不十分な制約を離れる場合は、Interface Builderでの制約を削除することはできませんあなたの助け

答えて

7

ため

感謝。

  • 一つの解決策:サイズと位置がを過剰決定されるまで、より多くの制約を追加します。余分な制約の1つを削除することができます。たとえば、あなたがこの例を与えた:

    を私は高さと幅を設定し、(それが所定の場所に「クリック」) ビューの下部にそれを配置しています。どのようにインターフェイスビルダーは、その高さ(iphone 5)に置く制約 のトップスペースを追加しました。だから 私はiPhone 4でそれを見ると、(私は、 "画面の一番下の場所に"スナップされているので、私は期待しているように)ぼんやりしませんが、代わりに を切り落とします。

    ビューを選択し、[エディタ]> [ピン]> [ボトムスペースをスーパービューにする]を選択します。今度は、高さ、幅、水平位置を決めるもの(忘れてしまったもの)、スーパービューの上部にピン、スーパービューの下部にピンが必要以上の制約があります。したがって、ピンを上に削除することができます。

  • もう1つの解決策:コードの不要な制約を削除します。制約は通常のインタフェースオブジェクトであるため、コンセントを作成してコードが実行されるときに削除することができます。しかし、サイズや位置を不確定なままにするようなやり方でこれを行うと、予期しない結果(「曖昧なレイアウト」)が発生するので注意が必要です。

  • さらに別の解決策:は、IBの不要な制約の優先順位を下げます。 Interface Builderは、すべての値が絶対に決定されるようにします。しかし、たとえばスーパービューのサイズが変わってしまい、Interface Builderで作成された制約のいくつかが望ましくないことが分かっているかもしれません。削除はできませんが、優先度を下げることができます。したがって、あなたの例では、上のピンと下のピンで終わる可能性がありますが、ピンの優先順位を上に下げることができます。私には非明らか

0

は、それが価値があることをより多くのトラブルがある場合は、あたりのnibファイル単位でこの新機能をオフにすることができますということでした。

nibファイルを選択し、ファイルインスペクタ(表示 - >ユーティリティ - >ファイルインスペクタの表示)を選択し、 "Use Autolayout"の選択を解除します。

+0

質問は** ** contstraintsで作業しています。私はトーマスは**本当にそれを無効にしたくないと思う。 –

+0

これは私にとって非常に役立ちました。チケットの作者はそれも役に立つと思います。彼はどのように彼がすべての制約に満足していないと書いているのトーンで伝えることができ、むしろそれらを提出するようにハックしようとせずに行うだけです。 – marfastic

0

これはiPhone 5の画面ではうまく構築され、iPhone 4の画面ではうまく構築されないさまざまな画面サイズで問題が発生した場合や、その逆の場合は、問題のビューの[Autoresize Subviews]オプションをオフにすることです画面のサイズを変更するストーリーボード/ペン先が表示されているウィンドウの右下にあるボタンをクリックして、両方の画面サイズがすべて正常であることを確認します。コードの中にすべて物事を構築し、このようなIBの奇妙なことを避けるときに私を幸せにするそれらの事のちょうどもう一つ。

関連する問題