web-dev-qa-db-ja.com

自動レイアウト:スーパービューに制約を追加し、トップレイアウトガイドではありませんか?

ストーリーボードのUIViewControllerにUIViewがあり、上部エッジからの距離を表示するスペースに制約を追加します。

さて、Ctrlキーを押しながらViewControllerのメインビューに通常の方法でドラッグすると、トップレイアウトガイドに設定するオプションしかありません。

これは私にとって問題です。なぜなら、アプリのある時点でメインビューを20〜50ピクセル上に移動しようとすると、スーパービューにアラインされていないため、移動したビューが移動しないからです。

ストーリーボードでこれを手動で行うにはどうすればよいですか、プログラムで追加する必要がありますか?

Xcode 6を使用しています。

109
Arbitur

制約定数値の右側に矢印があります。それをクリックすると、メニューがポップアップ表示され、そこで制約を相対的にしたいものを選択できます。 [表示]を選択すると、ビューの上部に固定されます。

enter image description here

303
Pavel Gurov

ストーリーボードで目的のビューを強調表示し、トップメニューで[Editor > Pin > Top Space to Superview]を選択することで、これを実行できるはずです。


これはXCode 7では時代遅れです。代わりに@PaulGurovの回答を参照してください。

57
dan

TL; DR:を押すと、マージンに制限できます Alt キーボードのキー


また、固定しようとしているビューが、固定したいビューの直接のサブビューではない場合、提案されたアプローチは実際には有効ではないことも追加できます。ビュー階層がそのように見え、画像ビュー(この場合はParallax Image View)をView Controllerのビュー(この場合はView)に固定するとします。

enter image description here

それをするためにあなただけ Control + Drag Parallax Image ViewからViewへ。 Vertical Spacing to Top Layout Guideを最上部のレイアウトガイドに固定するためのParallax Image Viewが表示されるデフォルトの選択肢が表示されます。

enter image description here

あなたが望むのは、それをビューの一番上(マージン)に固定することです。これを行うには、を押して他の制約セットに切り替える必要があります Alt

enter image description here

12
Zhivko Bogdanov

すでにたくさんの制約があり、それらを壊すのではなく、変更したかっただけです。編集する制約をダブルクリックし、「。Margin」を持つアイテムをクリックすると、そのアイテムを選択して「Relative to Margin」をオフにできます。

Select the relative to margin

2

ダンの答えは機能します。 storyBoardでビューをy <20に設定し、ピンパネルで制約を設定すると、topがsuperviewに設定されることを伝えたいだけです。

enter image description here

enter image description here

1
oren

上記の答えはどれもうまくいきませんでした。代わりに、サブビューのトップをトップレイアウトガイドではなくスーパービューのトップに設定するためにハックする必要があります。

  • 最初に、スーパービューでサブビューの中心を垂直に設定します。
  • 次に、サブビューとスーパービューのCenter Y制約をTop制約に変更します。

あなたは今行ってもいいです。

0
Jas_meet

誤ってビューの高さが0に設定されている場合、上部レイアウトガイドへの垂直スペースは表示されません。ただし、2004年頃のApple内の誰かにとって意味のあるはずの、垂直方向のスペースから下へのレイアウトガイドが表示されます。

0
Gabriel Jensen