【Swift】テキストを指定した後のUILabelの高さと幅を取得する

Swift でテキストを設定して、sizeToFit() を実行した後の UILabel の高さと幅を取得する方法についてです。

参考にさせていただいた記事はこちら。

ios – How to get the correct width of a UILabel after the text has been set? – Stack Overflow
https://stackoverflow.com/questions/30481931/how-to-get-the-correct-width-of-a-uilabel-after-the-text-has-been-set

 

サンプルコードは下記の通りです。

let label = UILabel()
label.text = "ラベルに設定したいテキスト"
label.sizeToFit()

let width = label.intrinsicContentSize.width
let height = label.intrinsicContentSize.height

だいぶ端折りましたが、重要なのは最後の2行です。
label.intrinsicContentSize.widthlabel.intrinsicContentSize.height を使うと、それぞれ UILabel の幅と高さを取得することができます。

私は、先日紹介した、Swift で Android の Toast 風のメッセージを表示する際に、より Android の見た目に近づけようとした時に使用しました。
全コードは、以前の記事を参照いただきたいのですが、まず下記のコードを削除します。

let width = parent.frame.size.width
let height = parent.frame.size.height / 15

そして、UILabel にテキストを設定した後に下記を追加します。

label.sizeToFit()
label.layer.cornerRadius = 10
label.clipsToBounds = true
let width = label.intrinsicContentSize.width + 25
let height = label.intrinsicContentSize.height + 15

上記のように変更することで、テキストサイズに合わせた角丸の背景色が設定されます。
角丸の大きさや、背景色とテキストの余白については、適宜変更してください。

 

以上、Swift でテキストを設定した後の UILabel の高さと幅を取得する方法についてでした。
ご参考になれば幸いです。

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

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

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

CTR IMG