Ich habe diese Kategorie-Implementierung erstellt und sie oben in die .m
Datei.
@implementation UITextField (custom)
- (CGRect)textRectForBounds:(CGRect)bounds {
return CGRectMake(bounds.origin.x + 10, bounds.origin.y + 8,
bounds.size.width - 20, bounds.size.height - 16);
}
- (CGRect)editingRectForBounds:(CGRect)bounds {
return [self textRectForBounds:bounds];
}
@end
Auf der Grundlage des von Piotr Blasiak bereitgestellten Links. Es schien einfacher zu sein, als eine ganz neue Unterklasse zu erstellen, und auch einfacher als das Hinzufügen der zusätzlichen UIView
. Dennoch scheint es, dass etwas fehlt, wenn man die Auffüllung eines Textfeldes nicht steuern kann.
Swift 4 Lösung:
class CustomTextField: UITextField {
struct Constants {
static let sidePadding: CGFloat = 10
static let topPadding: CGFloat = 8
}
override func textRect(forBounds bounds: CGRect) -> CGRect {
return CGRect(
x: bounds.origin.x + Constants.sidePadding,
y: bounds.origin.y + Constants.topPadding,
width: bounds.size.width - Constants.sidePadding * 2,
height: bounds.size.height - Constants.topPadding * 2
)
}
override func editingRect(forBounds bounds: CGRect) -> CGRect {
return self.textRect(forBounds: bounds)
}
}