swift中自定義Label的文字范圍

某些時候,我們需要調(diào)整文字的顯示范圍(比如使用Label自定義提示語)已更美觀的時候,最簡單的方法就是繼承UIlabel后重寫UILable的相關(guān)方法;這里寫swift的實現(xiàn)版本,OC的實現(xiàn)類似
首先我們需要一個新建的UIEdgeInsets屬性,以及重新構(gòu)造init方法

var edgesInset : UIEdgeInsets?
    
    override init(frame: CGRect) {
        super.init(frame: frame);
        self.edgesInset = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
        
    }

    override func awakeFromNib() {
        super.awakeFromNib()
        self.edgesInset = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    

接著重寫他的rect范圍

    override func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
        var rect = super.textRect(forBounds: UIEdgeInsetsInsetRect(bounds, self.edgesInset!), limitedToNumberOfLines: numberOfLines)
        rect.origin.x = rect.origin.x - (self.edgesInset?.left)!
        rect.origin.y = rect.origin.y - (self.edgesInset?.top)!
        rect.size.width = rect.size.width + (self.edgesInset?.left)! + (self.edgesInset?.right)!
        rect.size.height = rect.size.height + (self.edgesInset?.top)! + (self.edgesInset?.bottom)!

        return rect
        
    }

最后自然是重繪文字的顯示范圍

override func drawText(in rect: CGRect) {
        super.drawText(in: UIEdgeInsetsInsetRect(rect, self.edgesInset!))
    }

ok,這就搞定了,之所以重新定制Label的文字范圍,是因為要寫一個通用的提示,依托于snp就可以很輕易的實現(xiàn),而不需要去引入第三方庫

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,940評論 25 709
  • 1 檸檬和石頭認識完全是機緣巧合。 那天是5月2號,520宿舍剛剛從考試的戰(zhàn)役中解放出來,幾個女孩子決定一起去下個...
    薄荷1994閱讀 1,245評論 0 1
  • 初識薛之謙是在去年,他發(fā)了一張叫做紳士的專輯。之前當然和很多人一樣,只知道認真的雪。 聽完紳士之后,我就徹底淪陷了...
    永遠愛你的寶閱讀 489評論 6 2
  • 今天室友來找我,說想跟我聊聊。我說好啊。 其實我們平時聊天不怎么多,偶爾一起上課或者開開玩笑。今天突然一本正經(jīng)要跟...
    晚風(fēng)中Sharon閱讀 312評論 4 3

友情鏈接更多精彩內(nèi)容