web-dev-qa-db-fra.com

Définir des encarts sur UILabel

J'essaie de définir des encarts dans un UILabel. Cela a parfaitement fonctionné, mais UIEdgeInsetsInsetRect a été remplacé par CGRect.inset(by:) et je ne trouve pas comment résoudre ce problème. 

Lorsque j'essaie d'utiliser CGRect.inset(by:) avec mes encarts, je reçois alors le message que UIEdgeInsets n'est pas convertible en CGRect

Mon code

class TagLabel: UILabel {

    override func draw(_ rect: CGRect) {
        let inset = UIEdgeInsets(top: -2, left: 2, bottom: -2, right: 2)

        super.drawText(in: CGRect.insetBy(inset))
//        super.drawText(in: UIEdgeInsetsInsetRect(rect, inset)) // Old code
    }

}

Quelqu'un sait comment définir les incrustations dans UILabel?

5
Jacob Ahlberg

Veuillez mettre à jour votre code comme ci-dessous

 class TagLabel: UILabel {

    override func draw(_ rect: CGRect) {
        let inset = UIEdgeInsets(top: -2, left: 2, bottom: -2, right: 2)
        super.drawText(in: rect.insetBy(inset))
    }
}
8
Rakesh Patel

À mon humble avis, vous devez également mettre à jour la intrinsicContentSize:

class InsetLabel: UILabel {

    let inset = UIEdgeInsets(top: -2, left: 2, bottom: -2, right: 2)

    override func drawText(in rect: CGRect) {
        super.drawText(in: rect.inset(by: inset))
    }

    override var intrinsicContentSize: CGSize {
        var intrinsicContentSize = super.intrinsicContentSize
        intrinsicContentSize.width += inset.left + inset.right
        intrinsicContentSize.height += inset.top + inset.bottom
        return intrinsicContentSize
    }

}
4
André Slotta

Pour iOS 10.1 et Swift 4.2.1, utilisez rect.inset(by:

ce:

override func draw(_ rect: CGRect) {

    let inset = UIEdgeInsets(top: -2, left: 2, bottom: -2, right: 2)

    super.drawText(in: rect.inset(by: inset))
}
0
Lance Samaria

Votre "ancien code" avec UIEdgeInsetsInsetRect devrait fonctionner correctement.

https://developer.Apple.com/documentation/coregraphics/cgrect/1454218-insetby

Edité # 1:

changements dans l'API iOS 12:

https://developer.Apple.com/documentation/coregraphics/cgrect/1624499-inset?changes=latest_minor

0
Sedo