Padding für UITextField mit UITextBorderStyleNone einstellen: Swift
Basierend auf der meistgewählten Antwort von @Evil Trout habe ich eine benutzerdefinierte Methode in meiner ViewController-Klasse erstellt, wie unten gezeigt:
- (void) modifyTextField:(UITextField *)textField
{
UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)];
textField.leftView = paddingView;
textField.leftViewMode = UITextFieldViewModeAlways;
textField.rightView = paddingView;
textField.rightViewMode = UITextFieldViewModeAlways;
[textField setBackgroundColor:[UIColor whiteColor]];
[textField setTextColor:[UIColor blackColor]];
}
Jetzt kann ich diese Methode innerhalb (viewDidLoad-Methode) aufrufen und jedes meiner TextFields an diese Methode senden und Polsterungen für rechts und links hinzufügen sowie Text- und Hintergrundfarben angeben, indem ich nur eine Zeile Code schreibe, wie folgt:
[self modifyTextField:self.firstNameTxtFld];
Dies funktionierte perfekt auf iOS 7! Ich weiß, dass das Hinzufügen von zu vielen Ansichten könnte diese ein bisschen schwerer Klasse zu geladen werden. Aber wenn besorgt über die Schwierigkeiten in anderen Lösungen, fand ich mich mehr voreingenommen zu dieser Methode und flexibler mit dieser Art und Weise zu verwenden ;)
Danke für den Hack "Böse Forelle"! (Verbeugung)
Ich dachte, ich sollte den Codeschnipsel dieser Antwort mit Swift aktualisieren:
Da Swift es uns erlaubt, Erweiterungen für die bestehenden Klassen zu schreiben, sollten wir es auf diese Weise tun.
extension UITextField {
func addPaddingToTextField() {
let paddingView: UIView = UIView.init(frame: CGRectMake(0, 0, 8, 20))
self.leftView = paddingView;
self.leftViewMode = .Always;
self.rightView = paddingView;
self.rightViewMode = .Always;
self.backgroundColor = UIColor.whiteColor()
self.textColor = UIColor.blackColor()
}
}
Verwendung:
self.firstNameTxtFld.addPaddingToTextField()
Ich hoffe, dies ist für andere hilfreich!
Zum Wohl!