AutoLayoutとは
AutoLayouとは、制約を用いたレイアウト方法
です。
制約とは
位置やサイズの決める概念です。
こんなの勉強しなくても、
UIViewクラスのインスタンスプロパティのframeで位置やサイズが決めるられるやん!!
って思ったあなたはこの記事を最後まで読むことが決まりました。
(私もそう思ってました。)
話を戻します。
制約は、__同一の階層にあるビュー__や__親子関係にあるビュー__の関係を定義できます。
(ちなみに、frameはスーパービューの座標における位置を定義できます。)
同一の階層にあるビューの関係を定義できるということは、少ないコードで画面サイズの影響を押さえながらレイアウトすることが可能になります。
(frameを用いても画面サイズの影響を抑えることができます。デバイスに応じて画面サイズを取得してif文で条件分岐してframeを毎回決めるということをすれば.......気の遠くなるお話ですね)
AutoLayoutエンジン
私ちは、viewに対して制約式を与えることになります。
与えた制約式の連立方程式を解くことでレイアウトを決定します。これを行なっているのがAutoLayoutエンジン
です。
(名前めっちゃかっこいい)
では具体的に、制約式とはなんなのか?見ていきましょう!
制約式
下の図で、青枠で囲まれているのがViewBlueでオレンジ色のviewがViewOrangeだとしましょう。
viewOrangeのスーパービューがViewBlueです。
制約式は、4種類になります。
1.viewOrange.top=viewBlue.top
2.viewOrange.left=viewBlue.left
3.viewOrange.right=viewBlue.right
4.viewOrange.bottom=0.6 × viewBlue.bottom
制約式を一般化するとy=ax+b
になります。
(具体的に、連立方程式を効率的に解くアルゴリズムは、難しくて僕には理解できなかった。)
(AutoLayouでわからないことがあったらこの基本部分に戻ってくると理解できるかも。)