6

そのため、インターフェースビルダーの制約について頭を悩ませることはできません。

私はそれらを自分で追加することはできません - インターフェイスビルダーは、それが最もよく知っていると考えているようです.

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

制約は、レイアウトやあらゆる種類の変更、つまり iPhone 5 以前のもののビューの作成に役立つはずだと思っていました。また、ポートレート モードからランドスケープ モードに移行します。

私はそれをまったく機能させることができないようです。ビューを追加してスーパービューの上部の下に配置すると、Top space to:制約が設定されます。これはピクセル値になります。つまり、短い iPhone 4 で表示した場合 (または電話が横向きになった場合)、これらの要素は自動的に上に移動しません。

たとえば、キャッシュ レジスターに表示されるカスタム キーボード ビューを作成しようとしています。カスタム UIView サブクラスを作成し、UIView をインターフェイス ビルダーに配置しました。高さと幅を設定し、ビューの下部 (「クリック」した場所) に配置しました。インターフェイス ビルダーがTop space toその高さ (iphone 5) に配置する制約を追加した方法。そのため、iPhone 4 で表示すると、画面の下部に「スナップ」したため、動きませんが、代わりに下部が切り取られます。

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

私に何ができる?2 つの nib ファイル (iPhone 5 用と他の iPhone 用) を作成するだけでよいことは承知していますが、電話の横向きを変えたときに物事を自動的に動かしたい場合はどうすればよいでしょうか?

ご協力いただきありがとうございます

4

3 に答える 3

7

インターフェイスウィジェットのサイズと位置を完全に決定するのに十分な制約が残らない場合は、InterfaceBuilderで制約を削除することはできません。

  • 1つの解決策:サイズと位置が過剰決定されるまで、制約を追加します。その後、不要な制約の1つを削除できるようになります。たとえば、次の例を示します。

    高さと幅を設定し、ビューの下部(所定の位置に「クリック」された場所)に配置しました。インターフェイスビルダーがトップスペースを追加して、その高さに配置することを制約する方法(iphone 5)。そのため、iPhone 4で表示した場合、(画面の下部に「スナップ」して)動かずに、下部が切り取られます。

    ビューを選択し、[エディター]>[ピン]>[スーパービューへの下部スペース]を選択します。これで、必要以上の制約があります。高さ、幅、水平位置を決定するもの(言及し忘れた)、およびスーパービューの上部へのピンとスーパービューの下部へのピンです。したがって、上部のピンを削除できます

  • 別の解決策:コード内の不要な制約を削除します。制約は通常のインターフェイスオブジェクトであるため、制約へのアウトレットを作成し、コードの実行時に制約を削除できます。ただし、サイズや位置が不定になるような方法でこれを行うと、予測できない結果(「あいまいなレイアウト」)が発生するため、注意が必要です。

  • さらに別の解決策:IBの不要な制約の優先度を下げます。Interface Builderは、すべての値が絶対的に決定されることを保証します。しかし、たとえば、スーパービューのサイズが変更されるため、InterfaceBuilderによって作成される制約の一部が望ましくないことをご存知かもしれません。それらを削除することはできませんが、優先度を下げることはできます。したがって、この例では、ピンが上に、ピンが下になっている可能性がありますが、ピンの優先度を上に下げるだけで済みます。

于 2012-11-18T20:43:11.953 に答える
0

私には自明ではありませんが、価値があるよりも面倒な場合は、この新しい機能を nib ファイルごとにオフにできるということでした。

nib ファイルを選択し、ファイル インスペクター ([表示] -> [ユーティリティ] -> [ファイル インスペクターを表示]) を選択し、[自動レイアウトを使用] の選択を解除します。

于 2013-01-28T21:44:35.910 に答える
0

iPhone 5 の画面ではうまくビルドできるが iPhone 4 の画面ではうまくビルドできない場合、またはその逆の場合、さまざまな画面サイズでこれに問題がある場合、1 つの解決策は、問題のあるビューの「サブビューの自動サイズ変更」オプションをオフにしてから、画面サイズを変更するストーリーボード/ペン先を表示するウィンドウの右下にあるボタンをクリックし、両方の画面サイズですべてが正常に見えることを確認します。すべてをコードで構築し、このような IB の奇妙さを回避するときに私を幸せにするもう 1 つのことです。

于 2013-07-05T17:33:07.880 に答える