Set padding for UITextField with UITextBorderStyleNone

ios, padding, uitextfield

Solution

I found a neat little hack to set the left padding for this exact situation.

Basically, you set the leftView property of the `UITextField` to be an empty view of the size of the padding you want:

UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)];
textField.leftView = paddingView;
textField.leftViewMode = UITextFieldViewModeAlways;

Worked like a charm for me!

In Swift 3/ Swift 4, it can be done by doing that

let paddingView: UIView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: 20))
textField.leftView = paddingView
textField.leftViewMode = .always

Problem

I wanted to use a custom background for my `UITextFields`. This works fine except for the fact that I have to use `UITextBorderStyleNone` to make it look pretty. This forces the text to stick to the left without any padding. Can I set a padding manually so that it looks similar to `UITextBorderStyleRoundedRect` except for using my custom background image?

Original source

Related problems