Swift - UILabel中设置内边距,UILabel设置UIEdgeInsets、Padding

2022年4月2日 2471点热度 0人点赞 0条评论

UILabel中设置内边距,UILabel设置UIEdgeInsets、Padding

实际页面数据展示过程中,我们可能需要对UILabel的内边距进行调整,如UIButton的UIEdgeInsets设置一样,来达到对UILabel进行边框以及内容Padding的设置;

 

一般情况四种解决方法

  1.  使用UIButton来代替需要特殊显示的UILabel,这样解决不是很好
  2.  创建一个UIView作为UILabel的背景视图,在UIView进行边框以及UILabel与其内外边距的处理,这种解决方案也不是很好
  3.  使用YYKit框架,效果不错,但是不是很有必要
  4.  在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()

// 可以对其内边距进行修改

 

帮助教程

提供最新的帮助教程,方便使用。

文章评论