有时候,我们需要一个显示文字,又想这些文字与边界之间有自定义的边距。当然了,实现方式有很多,
- 通过设置label的宽高实现(最简单, 但是文字不固定的时候不好固定宽高);
- 通过View + Label 的方式实现(略显麻烦);
- 通过UIButton去掉交互来实现(内心拒绝);
不过,这里,我们通过自定义Label来实现。
要实现的效果:
image.png白色文字四周是有空白的。
class HomePaddingLabel: UILabel {
var textInsets: UIEdgeInsets = .zero
override func drawText(in rect: CGRect) {
super.drawText(in: rect.inset(by: textInsets))
}
override func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
let insets = textInsets
var rect = super.textRect(forBounds: bounds.inset(by: insets),
limitedToNumberOfLines: numberOfLines)
rect.origin.x -= insets.left
rect.origin.y -= insets.top
rect.size.width += (insets.left + insets.right)
rect.size.height += (insets.top + insets.bottom)
return rect
}
}
使用:
label = HomePaddingLabel()
label.font = .systemFont(ofSize: 10, weight: .regular)
label.textInsets = UIEdgeInsets(3, 6, 3, 6)
网友评论