I'm looking to set the left inset/margin of a UILabel
and can't find a method to do so. The label has a background set so just changing its origin won't do the trick. It would be ideal to inset the text by 10px
or so on the left hand side.
"Short answer: you can't. To change the spacing between lines of text, you will have to subclass UILabel and roll your own drawTextInRect, or create multiple labels." This is a really old answer, and other have already addded the new and better way to handle this..
If you have created an UILabel programmatically, replace the UILabel class with the PaddingLabel and add the padding: // Init Label let label = PaddingLabel() label. backgroundColor = . black label.
A view that displays one or more lines of informational text.
"label. layer. masksToBounds = true" is an important code, if you apply corner radius to a label and if it dosen't work than adding this will definitely add the corner radius to a particular label.. So this should be the correct answer..
I solved this by subclassing UILabel
and overriding drawTextInRect:
like this:
- (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)) }
Swift 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)) }
As you might have gathered, this is an adaptation of tc.'s answer. It has two advantages over that one:
sizeToFit
messageIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With