1
1

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 3 years have passed since last update.

[Swift] SizeClassの使い方まとめ

Last updated at Posted at 2020-05-06

この記事では、iOSアプリ開発に関する初心者向けの情報を共有します。
私の認識違いなどがありましたらコメントでお知らせいただけると幸いです。

SizeClassとは

一つのストーリーボードファイルに様々な画面サイズと方向のためのユーザーインターフェースレイアウトを設計できるようサポートするクラスです。


サイズクラスを理解するためには、下図を参考にしてください。
スクリーンショット 2020-05-06 21.38.32.png
スクリーンショット 2020-05-06 21.38.53.png

  • Regularはノーマルな大きさ、Compactは文字通り小さい大きさに理解して良いです。
  • Portrait Orientation(一般的な使い方である縦に立てて使用する)ではiPhoneは機種と関係なくRegularの高さとCompactの幅を持っています。
  • Landscape Orientation(横に倒して使用する)ではPlus、XR、Maxモデルの場合、Compactの高さとRegularの幅を持ち、その他の機種はCompactの高さとCompactの幅を持ちます。

したがって、CompactとRegularの間にそれぞれ異なる画面を作ることができます。(iPhone SE~iPhone Xの横モードでは見えなかったボタンがPlus、XR、Maxモデルの横モードでは見えるように。)

実習

スクリーンショット 2020-05-06 22.56.08.png

イメージビューを水平的に中央に配置して、画面上から40pts離れた所に配置してみました。


スクリーンショット 2020-05-06 22.58.02.png

つぎはStackviewを利用して互いに30ptsほど離れたイメジを水平に配置することにします。

そして、今度はStackviewの下にボタンを一つ入れておきます。 またこのボタンはStackviewと一緒にHorizontal Stackviewの中に入れてauto-layoutをしてみましょう。


スクリーンショット 2020-05-06 22.59.09.png

まず、ボタンを一つ作ってStackviewと先ほど作ったボタンを一緒にクリックしてEmbed inボタンを押してHorizontal Stackviewで包みます。 xcodeはかなりスマートなのでdeal buttonDtackviewが互いに垂直に配置されていることが分かり、自動的にHorizontal Stackviewで包んでくれるでしょう。


スクリーンショット 2020-05-06 22.59.58.png

後は、このVertical Stackviewにもう一度中央に位置させて、上のロゴとある程度離れるように再びconstraintsを設定しましょう。

外にあるStackviewにconstraintsを付与すると内部のStackviewにあったconstraintsが全て消えました。 xcode が全て自動で処理してくれたようです。


スクリーンショット 2020-05-06 23.00.28.png

シミュレーター上からアプリを横に回転した時に正しく見えるか確認したら。。
レイアウトが壊れていました。
この時にサイズクラスを利用するどころです。


スクリーンショット 2020-05-06 23.00.41.png

難しくありません。
変更させたい制約条件に追加事項を追加します。
今のような場合、下段のボタンと中間のStackViewの間を縮めることでレイアウトを調整したいなら、

  1. 該当Stackviewの下段の制約条件をクリック
  2. Spacing(変更したい属性)の側にある+ボタンをクリック
  3. Add Variationクリック
  4. 制約条件の調整
    の順に操作します。
スクリーンショット 2020-05-06 23.00.58.png

wChC (width Compact, height Compact)の属性20が追加されてレイアウトが変更されました。


スクリーンショット 2020-05-06 23.01.17.png

縦モードに変更すると、既存の設定値に戻ります。


スクリーンショット 2020-05-06 23.18.21.png

機種を変更し、iPhoneSEのように画面が小さい場合でも、同じく変更できます。
(上段の画像と中間のスタックビューの間を設定するイメージ)

まとめ

足りない点が多いですけれども、助けになればいいと思います。

参考は以下のとおりです。
https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/adaptivity-and-layout/

1
1
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?