の左のインセット/余白を設定したいのですUILabel
が、方法が見つかりません。ラベルには背景が設定されているため、その原点を変更するだけではうまくいきません。テキストを10px
左側に 程度インセットするのが理想的です。
ベストアンサー1
UILabel
私は次のようにサブクラス化してオーバーライドすることでこれを解決しましたdrawTextInRect:
:
- (void)drawTextInRect:(CGRect)rect {
UIEdgeInsets insets = {0, 5, 0, 5};
[super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
Swift 3.1:
override func drawText(in rect: CGRect) {
let insets = UIEdgeInsets.init(top: 0, left: 5, bottom: 0, right: 5)
super.drawText(in: UIEdgeInsetsInsetRect(rect, insets))
}
スウィフト4.2.1:
override func drawText(in rect: CGRect) {
let insets = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5)
super.drawText(in: rect.inset(by: insets))
}
ご想像のとおり、これはtc.の回答. それに比べて 2 つの利点があります:
sizeToFit
メッセージを送信して起動する必要はありません- ラベルのフレームはそのまま残ります。ラベルに背景があり、それを縮小したくない場合に便利です。