【Objective-C】UILabelで表示するテキストを上揃えにする

本日は、Objective-C で UILabel のテキストを上揃え・上寄せにする方法についてです。
UILabel で表示しようとするテキストが複数行になるので、UILabel の高さを広めにとったら、実行した時にラベル要素の上に指定した以上の余白が空いたので、こちらを修正するためです。
というか、今日実装するまで知らなかったのですが…Objective-C の UILabel って、「上揃え」ができる設定がないんですね…!
baselineAdjustment という上下中央寄せが指定できるプロパティはあるのですが、こちらには中央・下揃えしかない…。何故…。

実装にあたり、参考にさせていただいた記事はこちらから。

UILabelを上寄せにしたいとき – Qiita
https://qiita.com/mitsu9/items/160b1aa67eec80653d45

 

実際に実装したコードはこちら。

// UILabel の基本設定
UILabel *titleLabel = [[UILabel alloc] init];
CGRect titleFrame = CGRectMake(100, 100, 300, 200);
titleLabel.frame = titleFrame;
titleLabel.numberOfLines = 0;
titleLabel.text = "UILabelに表示したいテキスト";

// UILabel のサイズ調整
[titleLabel sizeToFit];
titleFrame.size.height = CGRectGetHeight(titleLabel.frame);
titleLabel.frame = titleFrame;
[self.view addSubview:titleLabel];

ポイントは 9〜11行目の処理ですが、まず事前準備として、UILabel の初期サイズを保存しておく必要があるため、3行目で CGRect 型の変数 titleFrame を定義します。
で、こちらの値を 4行目で UILabel の frame に反映させています。
事前準備は以上です。

あとは、UILabel に表示させたいテキストを追加後、まず 9行目の処理で、UILabel のサイズをテキストが表示できるぴったりのサイズに変更します。
こちらの処理は sizeToFit を使えば簡単に行えます。
そうすると、UILabel の横幅と縦幅が自動調整されるので、この時の高さを保存します。
保存先は、2行目で作成した変数 titleFrame で、保存するのは UILabel の高さのみです。
あとはこちらの CGRect の値を、再度 UILabel の frame に指定し、UILabel を画面に追加すれば完了です!

9〜11行目がないと、UILabel に縦方向の余白があり、その分テキストが下がっているように表示されてしまうのですが、こうすることで、UILabel の縦方向の余白がなくなるため、指定した通りの位置に UILabel のテキストが表示されます。

読んでみればなるほど!となる処理でしたが、これは思いつかなかったですね。
とても助かりました!

 

以上、Objective-C の UILabel でテキストを上揃えにする方法についてでした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG