本日は、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 でテキストを上揃えにする方法についてでした。
ご参考になれば幸いです。