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.width
と label.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 の高さと幅を取得する方法についてでした。
ご参考になれば幸いです。