簡単な方法
一番簡単な方法はテキストを中央寄せにして、Label自体のwidth, heightを伸ばすやり方。
label.text = "文字列" label.textAlignment = .center //書き出す文字列にサイズを合わす label.sizeToFit() //余白となるサイズを加える label.frame.size.width += 20 label.frame.size.height += 10
UILabelの拡張クラスを作成する方法
drawText
をoverrideしてtext書き出し時に余白を与える。
import UIKit class MyUIPaddingLabel: UILabel { var tagPadding:CGFloat = 7 override func drawText(in rect: CGRect) { let insets = UIEdgeInsets(top: tagPadding, left: tagPadding, bottom: tagPadding, right: tagPadding) super.drawText(in: rect.inset(by: insets)) } }
drawText時に余白を与えるのでこういった利用も可能。
myUIPaddingLabel = MyUIPaddingLabel() myUIPaddingLabel.tagPadding:CGFloat = 10 myUIPaddingLabel.text = "文字列"
しかしながら、drawText
した後にsizeToFit
するとおかしな挙動になるので注意。
myUIPaddingLabel = MyUIPaddingLabel() myUIPaddingLabel.tagPadding:CGFloat = 10 myUIPaddingLabel.text = "長い文字列長い文字列長い文字列長い文字列長い文字列長い文字列" myUIPaddingLabel.sizeToFit()
当然、paddingの余白がsizeToFitによって変更されてしまう。
リンク
リンク