【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行目で UILabelframe に反映させています。
事前準備は以上です。

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