LoginSignup
46
39

More than 5 years have passed since last update.

「Topから何%」をAutoLayoutで表現する

Last updated at Posted at 2017-05-21

こんな話の流れで出てきた、ふたつの方法をまとめます。

方法1: StackView + Spacer

  • Spacer(透明なダミーView)を用意し、対象Viewと一緒にStackViewに放り込む
  • Spacerについて、
    • constant が Spacer.height = 親View.height
    • multiplier が n : m

のとき、対象Viewは、親Viewのtopから n/m の場所に表示される。

20170518_024628.png
20170518_024644.png
20170518_024732.png

方法2: Center Y constraints の multiplier を使う

@tarunon さん方式。

対象の Center Y について、

  • constant が self.height / 2
  • multiplier が 2n : m

のとき、対象Viewは、親Viewのtopから n/m の場所に表示される。

20170518_022714.png
20170518_022802.png
20170518_022824.png

メリデメ考えてみた

Spacer 方式

  • メリット
    • 仕組みがわかりやすい
    • 比率=multiplier なので指定が直感的
  • デメリット
    • ダミーのViewが作られてしまう
    • 「Topから何%、Leftから何%」みたいな指定をしようとすると辛い

CenterY 方式

  • メリット
    • constraint一つで表現可能
    • 水平方向の指定も CenterX を追加するだけ
  • デメリット
    • 理解するのに頭を使う
      • constant が height/2 を示していることを表現できない
      • multiplier も比率と同じ値ではない
46
39
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
46
39