美文网首页程序员
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