iOSアプリ開発で【知ったこと】をつらつら追記していく 〜その6〜
以前から書かせていただいているmixi社のiOSアプリ勉強会からの学習内容です。
今回はAutoLayoutに関して、、
(徐々にAutoLayoutがわかってきた。)
Auto Layout入門 · mixi-inc/iOSTraining Wiki · GitHub
Auto Layout ドリル · mixi-inc/iOSTraining Wiki · GitHub
【AutoLayout設定の格言】
・上下、縦横と順番に設定していくことが重要
・着実に1個ずつやる。
【Missingが生じる条件】
・位置・高さ・幅が解釈できない状態だとエラーになる。
◯Missingが生じない場合(例)
上下の位置を設定、幅を設定すると、左右横幅設定しなくてもOK!
◯Missingが生じる場合(例)
幅640のディスプレイに対して、
左右のmarginを200,200、対象Viewの幅300とするとエラーになる。
【AutoLayoutの修正(クリア)】
・設定内容の修正は、Viewを選択して右側のSizeInspectorで修正。
・設定内容の全クリアは、Clear Constrains で制約を全消去
【隣合うViewと[同じ高さ/横位置]の場合、Trading系でやるとうまくいく。】
1個1個左からの位置を変えなくても、1箇所変えると、他が引きづられて変わるので便利。
【[Equal Widths][Equal Heights]使いどころ】
既にwidth/heightが設定されているViewと、同じ高さ/幅を指定する場合。
【Viewをコピーする場合、制約もコピーされるため注意!!!】
先に全部配置してから、制約constrationsを設定する方が良い
【[Aspect Ratio]使いどころ】
・縦or横どちらかを決めて、アスペクト比で指定できる。
・Width か Height のいずれかの制約が決まっていればそれに合わせて指定された比率でレイアウトしてくれる。
【一度配置したレイアウトに対して、変更を加えた場合はAutoLayoutは効かない。】
具体的には、パーツを配置した後にview.frameを変更する場合にそのレイアウト変更に対して制約は維持されません。
(例1)
viewDidLoadでframeサイズや位置を変えた場合
(例2)
bottom edges で整列させたいくつかのボタンのうち、一つをアニメーションさせたときに他のボタンはアニメーションせずにその場にとどまったままです。
【とりあえず、pinの[constraints to margin]は外して置いたほうが良い。】
-----------------------------------------番外編?-----------------------------------------
【IBOutletとは?】
IBOutlet:xib、Storyboardから参照ができるという意味。
【UILabelの最大行数制限をなくす】
UILabelのlinesを0にすると、最大行数が無限になる。