1. ホーム
  2. ios

Xcode 5でsuperviewにスペーシングコンストレイントを追加する

2023-10-04 15:41:46

質問

私は Xcode 5 で iOS アプリを構築していますが、レイアウト制約を追加するのに苦労しています。Xcode 4.x では、任意の UI 要素にコンテナー (スーパー ビュー) に先行/後続/上部/下部のスペースを追加することだけができました。今、私はこのオプションを持っているだけです。

テキスト ビューに "bottom space to superview" 制約を追加したいと思います。それは "spacing to nearest neighbor" と言いますが、私は "nearest neighbor" への制約を作成したくありません。テキストビューの下に他のオブジェクトがない場合は、コンテナに制約が正しく追加されます。しかし、何かを変更しようとすると、すべてが台無しになります。すべてのビューを別の場所に移動して、それから制約を追加し、それから他のビューを移動して戻す必要があります。テキストビューとUI要素(この場合はボタン)の間に制約を追加しても、うまくいきません(すべてが正しく見える:ボタンにはスーパービューの底への制約があり、テキストビューにはボタンとの垂直方向の間隔制約があり、矛盾する制約がありません)。UI要素は、異なる(3.5インチ)画面の向きで、画面境界から外れて表示されます。Interface Builderにバグがあるのでしょうか、それとも私が何かを見逃しているのでしょうか?すべてを正しく設定しても、インターフェイス・ビルダーの画面のサイズを変更すると、コントロールは境界から外れているように見えますが、シミュレータやデバイスでは3.5インチで正しく表示されます。Xcode 5 の新しい Interface Builder の制約を使用して UI を設計する際のベスト プラクティスは何ですか?

UPDATEです。 私は同じことで別のプロジェクトでいくつかのより多くの問題を抱えています。私のコントロールの上部を揃える代わりに、私のコントロールの下部をレイアウト ガイドに (約 -470 ポイント) 整えようとしていますが、これはコントロールが可変長の画面 (たとえば、通常と 4 インチ iPhone、および将来的に考えられる他のレイアウト) でレイアウトする必要があるので意味をなしません。以下は、起こっていることのスクリーンショットです。

そして、コンストレイントでこんなのが出てきました。

Interface Builderで トップ を上のレイアウトガイドに合わせるにはどうしたらよいでしょうか?

UPDATE 2です。 私は回避策を見つけました。私は最初にビューのサイズを変更して高さを減らし (それで、ビューのトップがトップ レイアウト ガイドに重ならないか、非常に近くなる)、次にそれをトップ レイアウト ガイドに CTRL+drag します。正しく動作しているようです。接続後、希望のサイズにビューをリサイズして Update Constraints . これは動作しますが、ビューのサイズを変更し、接続し、再度サイズを変更し、制約を更新する必要があるため、まだ解決策にはなっていません。

どのように解決するのですか?

ビューとそのスーパービューの間に制約を追加するには ("スーパービューに下のスペース") 、ドキュメントアウトライン (インターフェースビルダの左側) を使用できます。

ドキュメントアウトラインで

  1. ctrl キーを押しながら、ビューからそのスーパー ビューにドラッグします (またはその逆)。
  2. 追加したい制約を選択します(この例では、"Bottom Space to Container")。