1
5

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.

minHeightを保ちつつContentViewに合わせたUIScrollViewをStoryboard上で定義する

Posted at

やりたいこと

デフォルトは画面の高さで、中の要素が画面の高さを越えたらスクロールするViewを設定したい

  • 中の要素が画面の高さに収まる場合
    20170325015352.png
  • 中の要素が画面の高さに収まらない場合
    20170325015301.png

Storyboardの設定

20170325014416.png

  1. UIScrollViewを追加する
    • UIScrollViewの上下左右の制約を画面に合わせる
      20170325014524.png
  2. UIScrollViewの中にUIViewを追加する
    • UIViewの上下左右の制約をUIScrollViewに合わせる。Paddingを設定したければ、ここでConstantを設定する
    • UIViewの高さ・幅の制約をUIScrollViewに合わせる。Paddingを設定している場合は逆算した値をConstantに設定する(ここではPaddingを上下左右でそれぞれ8で設定しているので、逆算した値は-16になる)
      20170325014608.png
  3. UIViewの中にUILabelを追加する
    • UILabelの上下左右の制約をUIViewに合わせる。Paddingを設定したければ、ここでConstantを設定する
      20170325014738.png
  4. [重要] UIViewの高さの制約のremove at build timeを有効にする!
    • これを設定することで、中の要素が画面の高さを越えたらスクロール可能になる
      20170325014918.png
  5. [重要] UIViewにgreaterThanOrEqualToの高さの制約を設定する!
    • これを設定することで、UIViewの高さの最小値を設定することができる
      20170325015101.png

上の手順を踏めば、コードを書かずに中の要素に合わせて伸縮するScrollViewを実現できます!
本当はUIViewの高さのEqual制約は設定しなくても動くのですが、Storyboard上でエラーが出てしまうので、それを回避するためにremove at build timeを有効にした制約を設定しています。

おまけ

remove at build timeを有効にした制約はStoryboard上では普通の制約とは異なって表現されます。

20170325015512.png

お分かりいただけたでしょうか?制約を表す線が青ではなくて黒になってますね!わかりやすい! :thinking:

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?