This post presents a subclass of UITextField
with custom text padding. Following the method in this post will allow you to change tthe spacing between the frame of a UITextField
and the contained text.
FREE all Swift Loading Animations

Immediately get access to commented code for these animations when you follow Advanced Swift.
Subclass UITextField
The first step is to subclass UITextField
and define the desired text padding.
class TextFieldWithPadding: UITextField {
var textPadding = UIEdgeInsets(
top: 10,
left: 20,
bottom: 10,
right: 20
)
}
Override textRect(forBounds:) and editingRect(forBounds:)
The next step is to override textRect(forBounds:) -> CGRect
and editingRect(forBounds:) -> CGRect
. Use textRect(bounds:) -> CGRect
to return the drawable area for the text in a UITextField
. Use editingRect(forBounds:) -> CGRect
to return the area in the UITextField
where editable text can be displayed.
class TextFieldWithPadding: UITextField {
var textPadding = UIEdgeInsets(
top: 10,
left: 20,
bottom: 10,
right: 20
)
override func textRect(forBounds bounds: CGRect) -> CGRect {
let rect = super.textRect(forBounds: bounds)
return rect.inset(by: textPadding)
}
override func editingRect(forBounds bounds: CGRect) -> CGRect {
let rect = super.editingRect(forBounds: bounds)
return rect.inset(by: textPadding)
}
}
UITextField With Text Padding
That’s it! With the TextFieldWithPadding
implementation you can achieve the following results:
