スタッフブログ

STAFF BLOG

アプリ開発日誌

2016.10.18

【iOS】UIStackViewを使ってみよう!

こんにちは、鶴本です。

iOS開発において画面のレイアウトを画面サイズが異なる端末でも崩れないように対応するのは必須と言えます。

そのためにViewに制約を設定することでViewの位置とサイズを決定できるAutoLayoutを用いるのが主流となっており、iOS9からはAutoLayoutを効率よく使えるUIStackViewというものが登場しました。

今回はそのUIStackViewについて書こうと思います。

UIStackViewとは?

UIStackViewとはレイアウトを組む際に、Viewをひとまとめにして、AutoLayoutの制約をまとまて設定できるものです。
UIStackViewを使うと、View間の制約を設定する必要がなくなり、結果として制約の数を減らせます。
またStackViewを使うとレイアウトの修正もしやすくなります。

実際に使ってみた

それでは実際に使ってみます。
例として簡単なログイン画面を作成します。
比較のためUIStackViewを使用した場合とそうでない場合の2パターン作りました。

ログイン情報として、名前、パスワードを入力するとします。

allview

ピンクの枠線で囲ったものが制約の集合になります。
どちらの画面もLabelとTextFieldを配置し、View間のマージンを10pixel空ける制約を設定しています。

制約は同じなのですが、UIStackViewを使用した画面はひとまとめにしたため、LabelとTextField間の制約を設定する必要がなくなり、UIStackViewを使用していない画面に比べ制約数が少なくなっています。
UIStackViewを使用するとView間の制約をいちいち設定する手間が省けます。

ちなみにUIStackViewを使用した場合のView間の制約は、UIStackViewを選択した状態でAttributes Inspectorを選択し、Spacingの値を変更することで変えられます。

またUIStackViewでViewをひとまとめにしておくとレイアウトの修正も行いやすくなります。
例えば先ほどのログイン画面の名前とパスワードの間に以下のようなViewを追加する仕様変更があったとします。

loginview

UIStackViewを使用していない画面の場合は、名前とパスワード間の制約がすでに設定されているので、一度削除し、一から制約を設定し直さなければなりません。

removecon

一方UIStackViewを使用した画面では追加するViewをUIStackViewでまとめ、追加したいUIStackViewにドラッグアンドドロップするだけで追加できます。

createstack

createstackview2

二つの画面を見比べて見ると。。。

compare

同じレイアウトでも制約が少ない方が見栄えが良くていいですね。

またUIStackViewにはひとまとめにしたView内で表示の優先度をつけたり、どこで揃えるかを設定できたりします。

終わりに

今回はUIStackViewについて書きました。

細かいレイアウトの画面で一つ一つ制約を設定してしまうと、仕様変更があった時修正するのが大変です。

UIStackViewを使って小さい単位でViewをまとめておくと修正しやすく見栄えも良くなり大変便利です。

これからは積極的にStackViewを使っていきましょう!

BACK

お問合せ

イーディーエーに興味をお持ちいただいて
ありがとうございます!
スマホアプリに関するご相談、
お見積りや弊社へのご質問など、
お気軽にお問い合わせください。
担当者より折り返しご連絡させていただきます。

    お名前必須
    会社名
    メールアドレス必須
    電話番号必須
    お問合わせ種別必須
    お問合わせ内容必須

    アンケートにご協力ください。
    弊社サイトへはどのようにしてアクセスされましたか?

    個人情報のお取扱いに関する同意事項

    1.事業者の氏名又は名称

    株式会社イーディーエー

    2.個人情報保護管理者の氏名又は職名、所属及び連絡先

    個人情報保護管理者 小宮 保人
    Mail:[email protected]

    3.取得した個人情報の利用目的

    当フォームで取得した個人情報は、お問い合わせに関する回答のために利用し、目的外利用はいたしません。

    4.弊社が取得した個人情報の第三者への委託、提供について

    弊社は、ご本人に関する情報をご本人の同意なしに第三者に委託または提供することはありません。

    5.個人情報保護のための安全管理

    弊社は、ご本人の個人情報を保護するための規程類を定め、従業者全員に周知・徹底と啓発・教育を図るとともに、その遵守状況の監査を定期的に実施いたします。
    また、ご本人の個人情報を保護するために必要な安全管理措置の維持・向上に努めてまいります。

    6.個人情報の開示・訂正・利用停止等の手続

    ご本人が、弊社が保有するご自身の個人情報の、利用目的の通知、開示、内容の訂正、追加又は削除、利用の停止、消去及び第三者への提供の停止を求める場合には、下記に連絡を頂くことで、対応致します。

    株式会社イーディーエー 個人情報お問合せ窓口
    〒106-0032 東京都港区六本木7丁目14番23 ラウンドクロス六本木4F
    TEL:03-5422-7524 FAX:03-5422-7534
    Mail:[email protected]

    7.ご提供いただく情報の任意性

    個人情報のご提供は任意ですが、同意を頂けない場合には、第3項にあります利用目的が達成できない事をご了承いただくこととなります。

    8.弊社Webサイトの運営について

    弊社サイトでは、ご本人が弊社Webサイトを再度訪問されたときなどに、より便利に閲覧して頂けるよう「クッキー(Cookie)」という技術を使用することがあります。これは、ご本人のコンピュータが弊社Webサイトのどのページに訪れたかを記録しますが、ご本人が弊社Webサイトにおいてご自身の個人情報を入力されない限りご本人ご自身を特定、識別することはできません。
    クッキーの使用を希望されない場合は、ご本人のブラウザの設定を変更することにより、クッキーの使用を拒否することができます。その場合、一部または全部のサービスがご利用できなくなることがあります。