【Swift】UILabel 设置内边距

 

前言ide

  对应一个曾经开发 Android 的人来讲,没有这些基础属性简直使人发指,仍是表喷这个,认真写代码 - - #ui

 

声明
  欢迎转载,但请保留文章原始出处:)
  博客园:http://www.cnblogs.com
  农民伯伯: http://over140.cnblogs.comspa

 

正文code

class UILabelPadding : UILabel {
    
    private var padding = UIEdgeInsetsZero
    
    @IBInspectable
    var paddingLeft: CGFloat {
        get { return padding.left }
        set { padding.left = newValue }
    }
    
    @IBInspectable
    var paddingRight: CGFloat {
        get { return padding.right }
        set { padding.right = newValue }
    }
    
    @IBInspectable
    var paddingTop: CGFloat {
        get { return padding.top }
        set { padding.top = newValue }
    }
    
    @IBInspectable
    var paddingBottom: CGFloat {
        get { return padding.bottom }
        set { padding.bottom = newValue }
    }
    
    override func drawTextInRect(rect: CGRect) {
        super.drawTextInRect(UIEdgeInsetsInsetRect(rect, padding))
    }

    override func textRectForBounds(bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
        let insets = self.padding
        var rect = super.textRectForBounds(UIEdgeInsetsInsetRect(bounds, 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
    }

}

 

  代码说明:blog

    经过 IBInspectable 能够支持 UILable 在 Storyboard 里面就能指定内边距,很是方便:开发

    

 

  参考get

    参考这篇文章 http://stackoverflow.com/questions/21167226/resizing-a-uilabel-to-accomodate-insets 改的,注意这篇文章 http://stackoverflow.com/questions/3476646/uilabel-text-margin 有问题。博客

 

结束it

  抱歉命名用的 Android 的,而后超爱 IBInspectable 这个东西。io

相关文章
相关标签/搜索