Establecer relleno para UITextField con UITextBorderStyleNone: Swift
Basado en la respuesta más votada de @Evil Trout, creé un método personalizado en mi clase ViewController, como se muestra a continuación:
- (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]];
}
Ahora puedo llamar a ese método dentro (método viewDidLoad) y enviar cualquiera de mis TextFields a ese método y agregar relleno para derecha e izquierda, y dar colores de texto y fondo escribiendo solo una línea de código, de la siguiente manera:
[self modifyTextField:self.firstNameTxtFld];
¡Esto funcionó perfectamente en iOS 7! Sé que agregar demasiadas Vistas podría hacer que esta clase sea un poco más pesada para cargar. Pero cuando me preocupaba la dificultad en otras soluciones, me encontré más predispuesto a este método y más flexible al usarlo de esta manera. ;)
Gracias por el truco "Evil Trout"! (arco)
Pensé que debería actualizar el fragmento de código de esta respuesta con Swift:
Como Swift nos permite escribir extensiones para las clases existentes, escribámoslo de esa manera.
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()
¡Espero que esto sea útil para alguien más por ahí!
¡Salud!