Imposta il riempimento per UITextField con UITextBorderStyleNone: Swift
Sulla base della risposta più votata di @Evil Trout, ho creato un metodo personalizzato nella mia classe ViewController, come mostrato di seguito:
- (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]];
}
Ora posso chiamare quel metodo all'interno (metodo viewDidLoad) e inviare uno qualsiasi dei miei campi di testo a quel metodo e aggiungere il riempimento sia a destra che a sinistra e dare testo e colori di sfondo scrivendo solo una riga di codice, come segue:
[self modifyTextField:self.firstNameTxtFld];
Funzionava perfettamente su iOS 7! So che l'aggiunta di troppe viste potrebbe rendere questa classe un po 'più pesante da caricare. Ma quando sono preoccupato per la difficoltà di altre soluzioni, mi sono trovato più parziale a questo metodo e più flessibile nell'uso di questo modo. ;)
Grazie per l'hack "Evil Trout"! (arco)
Ho pensato di aggiornare lo snippet di codice di questa risposta con Swift:
Poiché Swift ci consente di scrivere estensioni per le classi esistenti, scriviamola in quel modo.
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()
}
}
Uso:
self.firstNameTxtFld.addPaddingToTextField()
Spero che questo possa essere utile a qualcun altro là fuori!
Saluti!