web-dev-qa-db-ja.com

UILabelにインセットを設定する

UILabelにいくつかのインセットを設定しようとしています。完全に機能しましたが、現在UIEdgeInsetsInsetRectCGRect.inset(by:)に置き換えられており、これを解決する方法がわかりません。

インセットでCGRect.inset(by:)を使用しようとすると、UIEdgeInsetsCGRectに変換できないというメッセージが表示されます。

私のコード

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
    }

}

インラベルをUILabelに設定する方法を知っている人はいますか?

7
Jacob Ahlberg

以下のようにコードを更新してください

 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))
    }
}
13
Rakesh Patel

Imhoあなたも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
    }

}
9
André Slotta
// this code differs from the accepted answer because the accepted answer uses insetBy(inset) and this answer uses inset(by: inset). When I added this answer in iOS 10.1 and Swift 4.2.1 autocomplete DID NOT give you rect.inset(by: )and I had to manually type it. Maybe it does in Swift 5, I'm not sure

IOSの場合10.1およびSwift 4.2.1 使用する rect.inset(by:

この:

override func draw(_ rect: CGRect) {

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

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

UIEdgeInsetsInsetRectを使用した「古いコード」は問題なく機能するはずです。

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

編集#1:

iOS 12 APIの変更:

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

0
Sedo