UILabelは自動で改行してくれたり、とても便利だ。
しかし、AutoLayoutで動的に高さを変える場合はどうすればいいか。
今回はそこに迫っていく。
 
まずはStoryboardで以下のようにUIViewを配置して、その中にUILabelを配置する。
わかりやすくするためにUIVIewは灰色にしてある。
uilabel_dinamic_height01
次にUIViewに以下のようにして上左右に制約を付ける。
uilabel_dinamic_height02
次にUILabelのタイトルを「春はあけぼの。やうやう白くなりゆく、山ぎはすこしあかりて、むらさきだちたる雲のほそくたなびきたる。」にして、以下のような制約をつける。
uilabel_dinamic_height03
上下左右だけじゃなく、高さの制約もつけるのがポイントだ。
ここまで終わったらUIViewをUpdate Framesしてみよう。
このようになるはずだ。
uilabel_dinamic_height04
ここからUILabelを複数行にしつつ、高さを動的に変えていく。

UILabelを選択し、Attributes InspectorでLinesを0に、Line BreaksをCharacter Wrapにする。
uilabel_dinamic_height05
次にUILabelの高さの制約を選択し、RelationをGreater Than or Equalに変更する。
uilabel_dinamic_height06
これで完了だ。
実行してみよう。
uilabel_dinamic_height07
期待通りの結果が得られた。