Add "padding" to a UITextView Add "padding" to a UITextView ios ios

Add "padding" to a UITextView


Using Objective-C I have done it just with

[self.textView setTextContainerInset:UIEdgeInsetsMake(0, 12, 0, 12)];

For Swift you can use:

textview.contentInset = UIEdgeInsets(top: 0, left: 12, bottom: 0, right: 12)

You can also create a Swift Extension (Suggested by chowdhury-md-rajib-sarwar) here:

extension UITextView {func leftSpace() {    self.textContainerInset = UIEdgeInsets(top: 4, left: 6, bottom: 4, right: 4)}

}

And then use

let textView = UITextView()textView.leftSpace() 

Hope this helps,Mário


This answer is totally wrong. Correct answer is simply:

uitextview.textContainerInset =       UIEdgeInsetsMake(8,5,8,5); // top, left, bottom, right

(Those values generally match how a UITextField on the same screen looks.)


Use this one:

self.textView.contentInset = UIEdgeInsetsMake(5, 5, 5, 5); 


EDIT 1/16/2015: This was written in 2012 and is no longer accurate. Use -textContainerInset as mentioned above.

Original post:

Using contentInset won't actually work. You have two reasonable choices: subclass UITextField and override the textRectForBounds: and editingRectForBounds: methods or create your text field transparently over a UIView and style the UIView.

Example of subclassing the UITextField:

- (CGRect)textRectForBounds:(CGRect)bounds {     return CGRectInset(bounds, 5, 5);}- (CGRect)editingRectForBounds:(CGRect)bounds {     return CGRectInset(bounds, 5, 5);}

Example of wrapping it in a UIView:

UIView *wrapView = [[UIView alloc] initWithFrame: CGRectMake(10, 10, 200, 30)];[wrapView addSubview:textView];wrapView.layer.borderColor = [UIColor darkGrayColor].CGColor;wrapView.layer.borderWidth = 2.0;wrapView.layer.cornerRadius = 5.0;