BLOG

2014年2月13日/ constrainedToSize, iOS, UILabel

[iOS] UILabelで表示するテキストによって高さを可変で変更する方法

 

画面上にテキストを表示する場合、固定の文言であれば表示サイズが決まるので特に意識する必要はありませんが、サーバーから可変な長いテキストを取得する場合などでは表示サイズが変わるケースがあります。

UILabelで numberOfLines を指定して複数行表示することは可能ですが、あらかじめ行数を指定する必要があるため、テキストの長さがわからない場合に指定できないという問題があります。

 

今回は、上記ケースでの対処法を紹介します。

 

まずはインスタンス生成とサイズフィット

 まずは通常通りインスタンスを生成し、テキストを設定してください。

フレームのサイズは一旦想定している領域でかまいません。

 

 

 この時注意すべきは、 numberOfLines を “0”に設定し、 sizeToFit メソッドをコールすることです。

これによって、行数を指定せずとも長いテキストを折り返して表示してくれます。

 

表示されるテキストのサイズを取得しUILabelのサイズに設定する

 

次にテキストのサイズを再計算します。

 

 

NSStringの sizeWithFont: constrainedToSize でテキストとフォント種別に応じたサイズを取得します。

 

最後に取得したサイズをUILabelに設定して終わりです。

 

画面内でスクロールする場合など、UIScrollViewに設定する値が可変になりますので、この方法で取得と設定をしてみてください。

 

Resent Posts

Category