9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Life is Tech! Tokai MentorsAdvent Calendar 2018

Day 3

AutoLayoutを使ってクイズアプリのレイアウトを作る

Last updated at Posted at 2018-12-03

はじめに

これはLife is tech !東海メンターアドベントカレンダー3日目の記事になります.
今日は筋肉メンターあーみーに引き続いてiPhone,Androidメンターのカーキがお送りします.

直近のスクールでメンバーがAutoLayoutで困っていたので,AutoLayoutで一つのアプリのレイアウトを作成する一連の流れを記事にしてみました.

AutoLayoutとは

AutoLayoutとはiOSアプリを開発する際に様々なサイズのiPhoneに対応するためにAppleが用意しているレイアウトの手法です.
StoryBoard上のViewに対して様々な制約を加えることによってレイアウトを整えることができます.
制約の方法には様々ありますが,それらの紹介・解説は元メンターはるふさんの記事が詳しいのでどうぞ!怖くない!AutoLayout 〜多画面対応 with Storyboard〜

クイズアプリをつくってみる

ここからAutoLayoutを使うアプリのサンプルとしてクイズアプリをつくっていこうと思います.

0.AutoLayoutなし

まずStoryBoardのデバイスをiPhone8を指定して適当にButtonやLabel,TextViewを配置しました.

  • iPhone8の場合
スクリーンショット 2018-12-02 14.55.46.png 当然まだAutoLayoutを指定していないので,iPhone界最大のiPhone MAXと最小のiPhone 4Sだとどうなっているかみてみましょう.
  • iPhone MAXの場合
スクリーンショット 2018-12-02 14.56.07.png 縦に長いiPhone Maxではかなり下にスペースが生まれてしまいます.
  • iPhone 4S
スクリーンショット 2018-12-02 14.56.22.png どんなアプリかすらわからなくなってしまいました.

1.セクションごとに分けてみよう

Viewを使う

ここから実際にAutoLayoutを使ってレイアウトを作成していきたいと思います.
今回StoryBoard上ではiPhone8を使用していますが,何度もいいです.
autoLayoutでは様々な制約で大きさや配置を決めることができるとは先ほども触れましたが,ビューが複雑になるとAutoLayoutでの制約も複雑を極めます.
そのためいくつかのゾーン毎にUIVIewを使用し,その中にLabelなどの部品を置いていくと比較的簡単にできます..
概要1-2.png
今回はTextViewやLabelなどをまとめるテキストゾーンと下のまるばつボタンを持つボタンゾーンで分けてみようと思います.
スクリーンショット 2018-12-02 15.09.45.png
一旦UIViewを上下で半分づつになるように配置してみました.わかりやすいように色をつけました.
ここでは正確に合わせなくても後ほど制約を加えた後に自動で修正されます.


比率で揃える

次に上下のUIViewの橋からの距離を揃えていきます.
スクリーンショット 2018-12-02 15.08.26.png
ここでは上下左右隣り合うviewからの距離が0と指定します.
スクリーンショット 2018-12-02 15.09.27.png
下のViewも同様に設定したら,次に上下2つのビューを選択した状態でEqual WidthEqual Heightにチェックを入れます.
このチェックにより2つのビューの大きさが等しくなります.

スクリーンショット_2018-12-02_15_11_24.png 次に上のビューを選択し,ViewControllerの右側に現れる.上図のところを選択します. スクリーンショット 2018-12-02 15.11.30.png 右のインスペクターパネルにこのように表示されているでしょうか スクリーンショット_2018-12-02_15_12_13.png 上のようにMultiplierを**1:2**と編集すると左のように上から**2:1**の比率でレイアウトされるようになります. 他の端末でもちゃんと比率は保たれているでしょうか? スクリーンショット_2018-12-02_15_12_37.png スクリーンショット_2018-12-02_15_12_46.png iPhone MaxとiPhone 4sでも2:1でレイアウトされています.

次は先ほど配置したViewの中に使用するLabelなどを先ほどと同様に配置します.スクリーンショット 2018-12-02 15.06.55.png

2.各部品の固定

テキスト系

ここから各部品に対してautolayoutを適用していきます.
基本AutoLayoutはビューの**「大きさ**・**座標」**の2つの要素を指定してあげる必要があります.
今回のクイズアプリではラベルの高さは文字サイズが固定であることから固定で,他の横幅や座標は周りのビューに依存するようにします.
スクリーンショット 2018-12-02 15.19.36.png
またクイズを表示するTextViewはViewに大きさに依存させるためにわまりのビューに依存するようにします.
スクリーンショット 2018-12-02 15.23.44.png
いい感じです.


ボタン系

さて続いてまるばつボタンを固定していきます.
まるばつボタンに関しては下のビューの半分の領域で均等に分けて,その領域で中央揃えで整えることにします.
半分で均等に分けるのに手っ取り早くViewを先ほどと同様にして,まる用,ばつ用で分けて,その中で中央揃えにしていきます.
Main_storyboard_—_Edited.png
中央揃えは2つ以上ビューを選択しないと行うことができないので,親のビューとボタンを選択して中央揃えを指定します.

スクリーンショット_2018-12-04_00_24_31.png **aspect比**を固定することでまるが楕円になることを防ぎます.またデバイスによりまるは大きくなることも考慮したいため,他のビューに依存するような制約方法をとります

ばつに関しても同じようにしてあげれば全体のレイアウトは完了です.
色を元のDefaultに戻してあげれば
スクリーンショット_2018-12-03_00_13_09.png

スクリーンショット_2018-12-03_00_13_27.png スクリーンショット_2018-12-03_00_13_37.png

どの端末でも同じようにレイアウトすることができました.

9
7
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
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?