UILabel のフォントサイズを自動調整する : Objective-C プログラミング

PROGRAM


UILabel のフォントサイズを自動調整する

UILabel には、領域内に表示文字列がなるべく収まるように、フォントサイズを自動調整する機能が備わっています。

たとえば、幅 200 ピクセルの UITextLabel に "System 17.0" のフォントで "UILabel に長い文字列を表示しています。" というテキストを表示させた場合、次のように後ろの方が省略されて、自動的に "..." が追記されて表示されました。

こうやって、自動的に省略される方が都合の良い場合もありますが、設定項目の表題などで、ひと目でその文字列を読めるようにしたい場合には、このように省略されてしまうと都合が悪い場合があります。

インターフェイスビルダーで自動調整を設定する

文字列ができるだけ省略されないように自動的に表示サイズを調整するためには、インターフェイスビルダーでは、次のように設定します。

このように、Xcode 4 の "Attributes Inspector" を使って、"Minimum Size" に限界まで小さくした場合のフォントサイズを指定して、"Autoshrink" にチェックを入れます。

このようにすることで、表示したい文字列が UILabel の枠を超えてしまうような場合に、"Minimum Size" で指定したサイズまで段階的に小さくして、可能な買い切りのめいいっぱいの大きさで表示してくれるようになります。

なお、"Minimum Size" で指定したサイズで表示させても UILabel の枠を超えてしまう場合には、"Minimum Size" での文字の大きさで、末尾が省略されて "..." という形で表示されます。

プログラムで自動調整を設定する

このような自動調整を、プログラムから行いたい場合は次のようになります。

// textLabel という名前の変数に格納された UILabel にフォントサイズの自動調整を設定します。

textLabel.adjustsFontSizeToFitWidth = YES;

textLabel.minimumFontSize = 10.0f;

このようにすることで、先ほどのインターフェイスビルダーで設定した時と同じように、表示する文字列が UILabel の範囲を超えてしまった場合に、限界のフォントサイズを 10 として、できるだけ大きい文字で全ての文字列が表示されるよう、自動的にフォントサイズが調整されるようになりました。

たとえば UITableViewController が "tableView:cellForRowAtIndexPath:" で生成する標準 UITableViewCell のテキストラベルの表示文字サイズを自動調整したい場合などには、このようにして設定してあげると簡単です。

[ もどる ]