通常、特定のデバイスのレイアウト制約を追加しないようにしたいとします。サイズクラスと向きは、より柔軟性があるため、より優れています。しかし、実際にそれを行う必要がある場合(場合によっては、本当に特定のレイアウトを持っている場合はやむを得ない場合もあります)、と他のいくつかのメカニズムを使用することができます(単純に画面のサイズを取得し、この場合には480ポイントで既知の高さに対するそれはあなたがあなたの制約を設定しているときだけif
文でこのコードを使用し、それに応じて変更します。あなたはこれが機能するためのコードであなたの制約を設定する必要があります。
を
2つ目の質問については、このようにビューを中央に置く方法がいくつかありますが、最も一般的なのはUILayoutGuide
です(または、<のiOS 9をサポートしていない場合は、スペーサー表示が不可視です)。インタフェースビルダーやコードでこれをやってください。このようなもの:
// Assuming you have a view called topView, a root view which are already configured and a myLabel view, this code only covers the vertical aspect of the layout
let guide1 = UILayoutGuide()
view.addLayoutGuide(guide1)
let guide2 = UILayoutGuide()
view.addLayoutGuide(guide2)
// space above the label
guide1.topAnchor.constraint(equalTo: topView.bottomAnchor).isActive = true
// space below the label
guide2.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
// make the spaces equal
guide1.heightAnchor.constraint(equalTo: guide2.heightAnchor).isActive = true
myLabel.topAnchor.constraint(equalTo: guide1.bottomAnchor).isActive = true
myLabel.bottomAnchor.constraint(equalTo: guide2.topAnchor).isActive = true
ストーリーボードファイルに私の全体のインタフェース作業を保つために、可能な場合うん、私は好みます。インターフェイスに関しては、コードで行う必要がありません。それは可能かどうか? –
インターフェースビルダーはまだ 'UILayoutGuide'をサポートしていないようですが、それは問題ありません。あなたは古いルートに行き、不可視のビューを代わりに追加することができます。ストーリーボードに2つの非表示のビューを追加し、上のコードで示したようにアンカーします。あなたのラベルの下に1つ、上に1つあり、高さを同じにします。これについて詳しくは、[こちらが回答です](http://stackoverflow.com/questions/13075415/evenly-space-multiple-views-within-a-container-view)を参照してください。 – Dima