UILabel テキスト余白 [重複] 質問する

UILabel テキスト余白 [重複] 質問する

の左のインセット/余白を設定したいのです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 つの利点があります:

  1. sizeToFitメッセージを送信して起動する必要はありません
  2. ラベルのフレームはそのまま残ります。ラベルに背景があり、それを縮小したくない場合に便利です。

おすすめ記事