2012-10-19 5 views
5

私は「ピン止め」で「標準」の間隔に一致する「垂直方向のスペース」を取得することができます:自動レイアウトのコードでUIView間の標準間隔を設定するにはどうすればよいですか?インターフェイスビルダーで

視覚的な制約言語で

enter image description hereenter image description here

私は同じことを達成することができます

V:[top]-[bottom] 

コード内の2つのビューの間に標準の間隔を追加するにはどうすればよいですか?

私はのUIViewControllerに表示されることがありますこのような何かを探しています

NSLayoutConstraint *spacing = ??? 
[self.view addConstraint spacing]; 
+0

「コード内で」ビジュアルフォーマットを使用できないのはなぜですか?これは単なる好奇心の疑問です(これは私にとっては大丈夫です)。 – jrturton

+0

@jrturton、私の他の制約はすべてコードにあります。私はドキュメントでこのステートメントを見つけたので私はこれをしています: "ビジュアルフォーマットの構文では表現できない制約がありますが、実際のユーザーインターフェイスで有用な制約のほとんどは可能です。固定されたアスペクト比(例えば、imageView.width = 2 * imageView.height)。 "私がやっていることを知り、ビジュアル言語の限界が明確になるまで、私はコード内ですべてをやりたかった。 –

答えて

2

視覚的なフォーマットの制約や、より冗長をミキシングとマッチング実際には、自動レイアウトに関するWWDCの講演では、制約を作成するための「優先」順序は、

と記載されています(実際には、「コード内」と言っていると思います)。
  • Interface Builderの
  • ビジュアル形式
  • シングル制約スタイル

あなたがない限り単一制約スタイルはあなたを与えることが必要余分なパワーと柔軟性(と視覚的なフォーマットな場所がたくさんありますこれまでの私の経験では動作しません)、ビジュアルフォーマットを使用する必要があります。トップダウンではなく、ボトムアップから上のリストに近づいているようです。

標準の間隔でビューをレイアウトしたいが、IBを使用していない場合は、ビジュアル形式を使用するのが適切です。 Robが言うように、 "標準的な"スペーシングを得るための定数はなく、あなたはあらゆるものに対して単一の制約を要求することで、自分自身ではるかに多くの作業をしています。

+0

私は、1つの例外を除いて、混在したビジュアル形式のスタイルを終了しました。相対的なサイズの制約は、コード以外では表現できません。これにより、制約コードが大幅に整理されました。いいですよ。 –

5

私はこれを試していない:

[self.view addConstraint:[NSLayoutConstraint 
    constraintWithItem:topView 
    attribute:NSLayoutAttributeBottom 
    relatedBy:NSLayoutRelationEqual 
    toItem:bottomView 
    attribute:NSLayoutAttributeTop 
    multiplier:1 
    constant:8]]; 
+5

8のスペースをコーディングするのは難しいですか?私は、OPは、標準的な間隔を記述するシステム定数またはキーワードの後に​​あると思います。 – jrturton

+0

@jrturtonヘッダーファイルで定数を見つけることができませんでした。 –

+0

@jrturton、もし標準的な間隔を表すシステム定数があれば、それは良い選択です。しかし、私はむしろ番号8を直接使用したくないでしょう。 –

関連する問題