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.
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: