Définir le remplissage pour UITextField avec UITextBorderStyleNone: Swift
Sur la base de la réponse la plus votée de @Evil Trout, j'ai créé une méthode personnalisée dans ma classe ViewController, comme indiqué ci-dessous:
- (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]];
}
Maintenant, je peux appeler cette méthode à l'intérieur (méthode viewDidLoad) et envoyer n'importe lequel de mes TextFields à cette méthode et ajouter un remplissage pour la droite et la gauche, et donner des couleurs de texte et d'arrière-plan en écrivant une seule ligne de code, comme suit:
[self modifyTextField:self.firstNameTxtFld];
Cela a parfaitement fonctionné sur iOS 7! Je sais que l'ajout de trop de vues pourrait rendre cette classe un peu plus lourde à charger. Mais soucieux de la difficulté des autres solutions, je me suis retrouvé plus partisan de cette méthode et plus flexible à utiliser de cette façon. ;)
Merci pour le Hack "Evil Trout"! (arc)
J'ai pensé que je devrais mettre à jour l'extrait de code de cette réponse avec Swift:
Puisque Swift nous permet d'écrire des extensions pour les classes existantes, écrivons-le de cette façon.
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()
}
}
Usage:
self.firstNameTxtFld.addPaddingToTextField()
J'espère que cela serait utile à quelqu'un d'autre!
À votre santé!