LoginSignup
7
11

More than 3 years have passed since last update.

AutoLayoutとStackViewを駆使して、縦と横で異なるレイアウトを設定する。

Posted at

iOSアプリを開発しているとき、縦と横でレイアウトがちょっと異なるアプリを作りたいときがあります。
ほとんどはAutolayoutを適切に設定すればなんとかなりますが、下記イメージのように、部品の位置が変わったり、縦のときは2行、横のときは1行にしたいなどの場合があり、設定に悩みます。
たて.png縦イメージ
よこ.png横イメージ

今回、AutoLayoutとStackViewを駆使すればなんとかなったので、その設定方法を説明します。

まず縦画面状態で部品を配置します。
まだAutolayoutは設定していません。
スクリーンショット 2019-05-22 18.00.41.png

配置後、画面下の部品をStackViewに入れていきます。
縦StackView
- 横StackView
- - View
- - View
- - View
- 横StackView
- - View
- - View
- - View

赤い警告がでていますが、一旦無視で進めます。
スクリーンショット 2019-05-22 18.11.52.png

画面下部のVary for Traitsを押し、Heightを選択し
AutoLayoutを設定していきます。
こうすることで、縦モード時のみ有効になる制約を設定できます。
スクリーンショット 2019-05-22 18.22.23.png

続いて横モード時のみ有効になる制約を設定していきます。
Orientationを横にし、Very for TraitsはHeightを選択します。
スクリーンショット 2019-05-22 18.24.19.png

外側のStackViewのAxis設定に、HeightがCompact時はHorizontalに設定します。
こうすることで、横モード時は横並びのStackViewにすることができます。
スクリーンショット 2019-05-22 18.26.10.png

一通りの制約設定とStackViewの設定が完了しました。
スクリーンショット 2019-05-22 18.29.13.png

動かしてみたところ
May-22-2019 18-40-38.gif

7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11