美文网首页程序员
swift 4 设置Label的内边距,亲测有效

swift 4 设置Label的内边距,亲测有效

作者: 小曼blog | 来源:发表于2018-11-12 18:00 被阅读0次

有时候,我们需要一个显示文字,又想这些文字与边界之间有自定义的边距。当然了,实现方式有很多,

  1. 通过设置label的宽高实现(最简单, 但是文字不固定的时候不好固定宽高);
  2. 通过View + Label 的方式实现(略显麻烦);
  3. 通过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)

相关文章

网友评论

    本文标题:swift 4 设置Label的内边距,亲测有效

    本文链接:https://www.haomeiwen.com/subject/ilwcfqtx.html