UILabelにスペース/パディングを追加する 質問する

UILabelにスペース/パディングを追加する 質問する

UILabel上部と下部にスペースを追加したい場所があります。最小高さの制約に従って、次のように変更しました。

ここに画像の説明を入力してください

これを実現するために、私は以下を使用しました:

override func drawTextInRect(rect: CGRect) {
    var insets: UIEdgeInsets = UIEdgeInsets(top: 0.0, left: 10.0, bottom: 0.0, right: 10.0)
    super.drawTextInRect(UIEdgeInsetsInsetRect(rect, insets))
}

しかし、2 行以上書くと問題は同じになるので、別の方法を見つける必要があります。

ここに画像の説明を入力してください

ベストアンサー1

Swift 4.2で試してみましたが、うまくいくといいですね。

@IBDesignable class PaddingLabel: UILabel {

    @IBInspectable var topInset: CGFloat = 5.0
    @IBInspectable var bottomInset: CGFloat = 5.0
    @IBInspectable var leftInset: CGFloat = 7.0
    @IBInspectable var rightInset: CGFloat = 7.0

    override func drawText(in rect: CGRect) {
        let insets = UIEdgeInsets(top: topInset, left: leftInset, bottom: bottomInset, right: rightInset)
        super.drawText(in: rect.inset(by: insets))
    }

    override var intrinsicContentSize: CGSize {
        let size = super.intrinsicContentSize
        return CGSize(width: size.width + leftInset + rightInset,
                      height: size.height + topInset + bottomInset)
    }   

    override var bounds: CGRect {
        didSet {
            // ensures this works within stack views if multi-line
            preferredMaxLayoutWidth = bounds.width - (leftInset + rightInset)
        }
    } 
}

または、CocoaPods をこちらで使用することも可能ですhttps://github.com/levantAJ/PaddingLabel

pod 'PaddingLabel', '1.2'

ここに画像の説明を入力してください

おすすめ記事