2015年1月21日水曜日

今回は、お勉強中のプログラミングの話。

レスポンシブとかアダプティブとかが流行ってるし(細かな違いは分かってないのですがw)、iOSのプログラミングもマルチ解像度時代ということで、ぼやっとしか理解できていなかったAutolayoutをお勉強しました。

かなり個人的なメモですが、いろいろ先人の情報を見て やっと腑に落ちたので公開します。

PinだとかAlignとかイロイロあるけど、分かりやすい解説はいっぱいあるし(例えばこれ)、バラバラには分かる。 分かるけど何か もやっ と引っかかっている。  理系なので、根底の原理原則のレベルで理解したい :-)
どの制約も制約編集画面(「Attributes Inspector」)を見ると 「First item」、「Relation」、「Second Item」、「Multiplier」、「Constant」が出てくる。 結局、どの制約も最終的に これらのパラメータで表せるっぽい。


FirstItem = multiplier × SecondItem + Constant

分かってみると簡単で、これらのパラメータは上式のような関係になっていて、等式だけではなく Relation ≦ ≧ という不等式も表せる。というものでした。 

Aspect Raitoも muliplierに1:2とか表示される。 これは 1/2 = 0.5 ということで、View.Width = 0.5 * View.Height つまり W:H=1:2となるわけですね。 簡単カンタン

で、Leadingは 左側のx座標で、Trailingは右側x座標だから、View.Leading = 0.5 * Superview.Trailing とかすると、親ビューと左右中央に 子ビューの左端が揃うわけですね。(multiple = 0.5 のときは View.Leading = Superview.centerXの方が直観的ですけどねw)。 で、20pixelマージンが欲しければ、View.Leading = 0.5 * Superview.Trailing + 20 とかすれば良いんだ。

最後に、size classと組み合わせた例が moving gifもあいまって、英語だけどわかりやすかったのでリンクを貼っておきます

もしかしたら続くかも… なので、その1ww