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