UILabel中设置内边距,UILabel设置UIEdgeInsets、Padding
实际页面数据展示过程中,我们可能需要对UILabel的内边距进行调整,如UIButton的UIEdgeInsets设置一样,来达到对UILabel进行边框以及内容Padding的设置;
一般情况四种解决方法
- 使用UIButton来代替需要特殊显示的UILabel,这样解决不是很好
- 创建一个UIView作为UILabel的背景视图,在UIView进行边框以及UILabel与其内外边距的处理,这种解决方案也不是很好
- 使用YYKit框架,效果不错,但是不是很有必要
- 在UILabel的基础上自定义一个有Padding的UILabel控件
/// 在Swift 5.5 已验证 import UIKit @IBDesignable class PaddingLabel: UILabel { @IBInspectable var topInset: CGFloat = 5.0 @IBInspectable var bottomInset: CGFloat = 5.0 @IBInspectable var leftInset: CGFloat = 10.0 @IBInspectable var rightInset: CGFloat = 10.0 override func drawText(in rect: CGRect) { let insets = UIEdgeInsets(top: topInset, left: leftInset, bottom: bottomInset, right: rightInset) super.drawText(in: rect.inset(by: insets)) } override var intrinsicContentSize: CGSize { let size = super.intrinsicContentSize return CGSize(width: size.width + leftInset + rightInset, height: size.height + topInset + bottomInset) } override var bounds: CGRect { didSet { preferredMaxLayoutWidth = bounds.width - (leftInset + rightInset) } } } // 使用 let statusLabel = PaddingLabel() // 可以对其内边距进行修改
文章评论