web-dev-qa-db-ja.com

Xcode 5のスーパービューに間隔の制約を追加します

Xcode 5でiOSアプリを構築していますが、レイアウト制約を追加するのに問題があります。 Xcode 4.xでは、任意のUI要素のコンテナ(スーパービュー)に先頭/末尾/上部/下部のスペースを追加できました。今、私はこのオプションしかありません:

enter image description here

テキストビューに「スーパービューの下部スペース」制約を追加したい。 「最近傍への間隔」と表示されますが、「最近傍」への制約を作成したくありません。テキストビューに何か他のものがあり、それで制約を作成したくありません。テキストビューの下に他のオブジェクトがない場合、コンテナに制約が正しく追加されます。しかし、何かを変更しようとすると、すべてが台無しになります。すべてのビューを別の場所に移動し、制約を追加してから、他のビューを元に戻します。テキストビューとUI要素(この場合はボタン)の間に制約を追加すると、機能しません(すべてが正しく見える:ボタンにはスーパービューの下部に対する制約があり、テキストビューにはボタン、競合する制約はありません)。 UI要素は、さまざまな(3.5インチ)画面の向きで画面境界外に表示されます。 Interface Builderにバグがありますか、それとも何か不足していますか?すべてを正しくセットアップできた場合、インターフェイスビルダー画面のサイズを変更すると、コントロールが範囲外に見えますが、シミュレーター/デバイスで3.5インチで正しく表示されます。 Xcode 5の新しいInterface Builder制約を使用してUIを設計する「ベストプラクティス」とは何ですか?

PDATE:同じことをしている別のプロジェクトでもう少し問題があります。コントロールをCtrlキーを押しながら「トップレイアウトガイド」と表示されている位置までドラッグして、ビューのトップをトップレイアウトガイドに正確に修正しようとしています。また、コントロールの下部をレイアウトガイドに合わせようとしています(約-470ポイント)コントロールの上部を傾ける代わりに、コントロールは可変高画面にレイアウトする必要があるため、意味がありません(たとえば、通常の4インチのiPhone、将来的に他の可能性のあるレイアウト..)これが何が起こっているかのスクリーンショットです:

enter image description here

そして、私は制約でこれを取得しています:

enter image description here

Interface Builderで、ビューのtopをトップレイアウトガイドに揃えるにはどうすればよいですか?

更新2:回避策が見つかりました。まず、ビューのサイズを変更して高さを減らし(上部が上部レイアウトガイドに重ならないか、上部レイアウトガイドに非常に近くならないようにします)、次にCtrlキーを押しながら上部レイアウトガイドにドラッグします。正常に動作しているようです。接続した後、目的のサイズにビューのサイズを再度変更し、Update Constraints。機能しますが、ビューのサイズ変更、接続、再サイズ変更、および制約の更新が必要なため、まだ解決策ではありません。

74
Can Poyrazoğlu

ビューとそのスーパービューの間に制約を追加するには(「スーパービューの下部スペース」など)、ドキュメントアウトライン(Interface Builderの左部分)を使用できます。

ドキュメントの概要:

  1. Ctrlキーを押しながら、ビューからそのスーパービューにドラッグします(またはその逆)。
  2. 追加する制約を選択します(この例では「コンテナへの下部スペース」)。

ctrl-drag from the view to its' superview (or vice versa)Select the constraints you want to add

94
Jarig

Jarigによる回答は良いが、コメントに記されているように、予期しない結果につながる場合がある。

もう1つのオプションは、子ビューを選択して次の場所に移動することです。

エディター>ピン>トップビューからスーパービュー

どちらの制約でもかまいません。

48
kball

今ではボトムエッジの制約のようです。ビューとそのスーパービューを選択し、「整列」をタップして、「下端」を確認します

pic

1
epolyakov

Xcode 4のように末尾または先頭の制約を追加する場合は、制約を左、右、上、または下に追加するビューの中心からCtrlキーを押しながらドラッグします。その後、追加する制約を選択できるウィンドウが表示されます(Ctrlキーを押しながらドラッグした方向によって異なります)。

0
AlexR