UILabelは自動で改行してくれたり、とても便利だ。
しかし、AutoLayoutで動的に高さを変える場合はどうすればいいか。
今回はそこに迫っていく。
しかし、AutoLayoutで動的に高さを変える場合はどうすればいいか。
今回はそこに迫っていく。
まずはStoryboardで以下のようにUIViewを配置して、その中にUILabelを配置する。
わかりやすくするためにUIVIewは灰色にしてある。

次にUIViewに以下のようにして上左右に制約を付ける。

次にUILabelのタイトルを「春はあけぼの。やうやう白くなりゆく、山ぎはすこしあかりて、むらさきだちたる雲のほそくたなびきたる。」にして、以下のような制約をつける。

上下左右だけじゃなく、高さの制約もつけるのがポイントだ。
ここまで終わったらUIViewをUpdate Framesしてみよう。
このようになるはずだ。

ここからUILabelを複数行にしつつ、高さを動的に変えていく。
UILabelを選択し、Attributes InspectorでLinesを0に、Line BreaksをCharacter Wrapにする。

次にUILabelの高さの制約を選択し、RelationをGreater Than or Equalに変更する。

これで完了だ。
実行してみよう。

期待通りの結果が得られた。
わかりやすくするためにUIVIewは灰色にしてある。

次にUIViewに以下のようにして上左右に制約を付ける。

次にUILabelのタイトルを「春はあけぼの。やうやう白くなりゆく、山ぎはすこしあかりて、むらさきだちたる雲のほそくたなびきたる。」にして、以下のような制約をつける。

上下左右だけじゃなく、高さの制約もつけるのがポイントだ。
ここまで終わったらUIViewをUpdate Framesしてみよう。
このようになるはずだ。

ここからUILabelを複数行にしつつ、高さを動的に変えていく。
UILabelを選択し、Attributes InspectorでLinesを0に、Line BreaksをCharacter Wrapにする。

次にUILabelの高さの制約を選択し、RelationをGreater Than or Equalに変更する。

これで完了だ。
実行してみよう。

期待通りの結果が得られた。
コメント