一般Swift UIButton都有imageEdgeInsets或是titleEdgeInsets可以設置
但UILabel就沒這種內建函式可以用
這時候如果需要設置內邊距的話可以這樣做

新增UILabel檔案

UIEdgeInsets 上下設置2的距離
避免部分文字跑版

UILabelPadding.swift

class UILabelPadding: UILabel {
    let padding = UIEdgeInsets(top: 2, left: 0, bottom: 2, right: 0)
    override func drawText(in rect: CGRect) {
        super.drawText(in: rect.inset(by: padding))
    }

    override var intrinsicContentSize : CGSize {
        let superContentSize = super.intrinsicContentSize
        let width = superContentSize.width + padding.left + padding.right
        let heigth = superContentSize.height + padding.top + padding.bottom
        return CGSize(width: width, height: heigth)
    }
}

繼承

將Xib或是UILabel直接繼承UILabelPadding.swift

DEMO

完成之後Label上下就會有預留空間了

Swift更多文章

Swift 彈出視窗 AlertController 的使用方法 💥

Swift 判斷螢幕方向 📱

Swift Core Data 實現 💾🔥

Swift UISegmentedControl 💻分段控制器!

Swift 實現抽屜效果 🧹

Categorized in: