【Xcode AutoLayout】小技2 画面サイズに応じてマージンを取る Tips

※この記事はAutoLayoutを使う上で役に立つ小技を紹介してます。AutoLayoutを少し触ったことがある方向けです。

 

  1. 小技1 画面サイズに応じて拡縮する
  2. 小技2 画面サイズに応じてマージンを取る(この記事)
  3. 小技3 画面サイズに応じてフォントサイズ・行間を変更する

 

前回 画面サイズに応じて拡縮する という記事を書きましたが、今回はそれの応用。

画面サイズに応じてマージン取る方法を紹介します。

簡単なAutoLayoutのマージンの取り方として、Top Space を使って、上にあるViewから何pxという方法を取ると思います。ただこの方法を使い、色々な画面サイズで同じように表示する場合は、storyboardを画面サイズ分用意する必要があります。
ただそれは保守する上で辛いので、極力やめたいところです。

 

では実際にやっていきます。

まずは、下記のようにTop Spaceを50にした、青いViewを配置しました。
このView自体は 前回の方法 で拡縮が行われるように設定してます。 

a2_1

次にTop Space制約を外します。

a2_2
※origin.yに相当する情報が無くなったため、赤くなって怒られます。

50 x 50の緑のViewを青いViewの上に配置します。
(緑なのはわかりやすくするためで、heightだけが重要なので、widthは適当でも良いです)

a2_3

薄々わかってきたかもしれませんが、この緑のViewにも拡縮するように、前回の方法 で制約を付けます。

 a2_4

次に緑のViewにTop Space 0でステータスバーとの距離を指定し、Bottom Space 0で、青いViewとの距離を指定します。

a2_5

これで完了です。緑のViewが画面の横幅に応じて拡縮するので、青いViewまでの距離が伸縮し、動的にマージンが取れます。

あとはViewって名前だと、後で見て絶対わからなくなるので、blue_view_top_spaceなどの名前を緑のViewに付けましょう。

a2_6

ここまでやったら当然ですが、見えたらいけないので、緑のViewの色を透明にします。

a2_7

■最後に
この方法を使うとマージン用のViewが結構存在することになるのがデメリットですが、storyboardを一杯用意するより楽だと思います。

●この記事を書いた人