2
6

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.

はじめてのSwiftアプリ制作5: StoryboardとAuto Layoutその2

Last updated at Posted at 2017-07-03

今回は、Storyboardを使ってパーツを配置していく前にUIScrollViewを使った簡単ないマルチデバイスでの表示を対応する方法を書きます。

前回
はじめてのSwiftアプリ制作4: StoryboardとAuto Layoutその1

環境

Xcode 8.3
Swift 3.0

マルチデバイスでの表示の対応って?

前回StoryboardとAutoLayoutについて簡単に記載いたしましたが、iPhoneやiPadはご存知の通り様々な端末サイズがあります。

そのため、親ビューからの上下左右の制約をつけてしまうと端末の大きさの問題で想定していたサイズで表示されないケースがあります。

以下の例で確認してみます。

(例)Viewの中に 300x600 の縦長の画像を入れて、Viewからの上下左右の空白分の制約をつける

3.png

この場合、十分な端末サイズであるiPhone7で表示確認した場合正常な表示になりますが・・・

1.png

iPhone4sで表示確認した場合には、端末サイズが足りないため画像の大きさが変化してしまいます。

2.png (ちょっと横長になってます)

特に文字が入ってる画像やビューですと、文字が潰れてしまって読みにくくなってしまうこともありますのでこの表示は避けたいです。
そこで使用するのがUIScrollViewです。

ViewControllerの親ビューにUIScrollViewを追加します。

5.png

そして、ビューにたいして上下左右0の制約をつけて同じ大きさとしましょう。

6.png

次に、ScrollViewの下にViewを追加しておきます。

7.png

今度はScrollViewに対して上下左右0の制約をつけましょう。

8.png

今度はScrollViewに対しての制約のため制約が足りないと怒られてしまいます。
追加で高さ・幅をScrollViewと同じ大きさと定義しましょう。

9.png

さらに、同じ高さ・同じ幅という制約に対してPriorityという値を下げます。(デフォルトは1000)これは制約の優先度で、これを下げておくとこのViewの下で与えられた制約の優先度が上がるようになります。(これを行わないとView=ScrollViewという制約がこのViewの下で設定する上下左右の制約より優先度が高くなってしまい、結局表示は前の状態のままになります)

10.png

最後に、このViewの下で先ほどと同様300x600の画像を追加し上下左右に制約をつけてみます。
そして、iPhone4sでの表示を確認すると・・・

11.png (画像ではわかりにくいですが、スクロールできます)

300x600の画像サイズが保たれたまま高さが足りない部分はスクロールがされるようになりました。

プレビュー機能

上記のUIScrollViewと制約の優先度は考慮してくれないようですが、通常の表示をした際のプレビュー機能を一覧で見ることができます。

はじめてのSwiftアプリ制作2: Xcodeの機能でご紹介した右上のわっか印をクリックして、その中の選択されているファイルの横に「Automatic」となっていると思いますのでそれを「Preview」に変更すると以下のような画面で表示することができます。

12.png

とりあえず表示崩れが起きうるかどうかということを確認したいのでしたら、こちらの機能を使って確かめるのが楽です。

まとめ

  • 親ビューからの上下左右の制約をつけた場合、端末のサイズによっては画像の表示サイズが変わってしまう。
  • StoryboardでViewControllerを作った際にはUIScrollViewを追加して置くとマルチデバイス対応をある程度カバーできる。
  • 上下左右の制約を追加しないケースでも特に弊害はないため、やり得。
  • プレビュー機能を有効活用して、マルチデバイス対応が必要かどうか判断しよう。

次回は、Storyboardを使った遷移について書きます。

2
6
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
2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?