Quiero dejar un poco de espacio al comienzo de un UITextField, como aquí: Agregar margen izquierdo a UITextField
Pero no sé cómo hacer eso con Swift.
ios
swift
cocoa-touch
uitextfield
LinusGeffarth
fuente
fuente
UITextField.leftView = paddingView
. así que proporcione a la vista de relleno el ancho deseado.Respuestas:
Esto es lo que estoy usando ahora:
Swift 4.2
Swift 4
Swift 3:
Nunca configuré otro relleno, pero puedes ajustarlo. Esta clase no se ocupa de rightView e leftView en el campo de texto. Si desea que se maneje correctamente, puede usar algo como (ejemplo en objc y solo necesitaba el rightView:
fuente
newBounds
método con laUIEdgeInsetsInsetRect
función. En lugar dereturn self.newBounds(bounds)
usted podría usarreturn UIEdgeInsetsInsetRect(bounds, padding)
y eliminar elnewBounds
método.Si usa una extensión, no es necesario subclasificar UITextField y la nueva funcionalidad estará disponible para cualquier UITextField en su aplicación:
Cuando necesito configurar el relleno de un campo de texto en cualquier parte de mi aplicación, simplemente hago lo siguiente:
Usando extensiones Swift, la funcionalidad se agrega al UITextField directamente sin subclases.
¡Espero que esto ayude!
fuente
X, Y, Z son sus valores deseados
fuente
Tal margen se puede lograr estableciendo
leftView
/rightView
aUITextField
.Actualizado para Swift 4
Acabo de agregar / colocar un
UIView
lado izquierdo y derecho del campo de texto. Entonces, la escritura comenzará después de la vista.Gracias
Espero que esto haya ayudado ...
fuente
Swift 4, Xcode 9
Me gusta la respuesta de Pheepster , pero ¿qué tal si lo hacemos todo desde la extensión, sin requerir código VC o ninguna subclasificación?
fuente
rightView?.frame.size.width ?? 0
paddingLeft
apaddingLeftCustom
y el otro también. Si no lo hubiera hecho, habría aparecido un error que me siguió dos semanas cuando usaba Vistas que tienen un UITextView (como UISearchBar). Simplemente ... no establezca los nombres predeterminados.en Swift 4.2 y Xcode 10
Inicialmente mi campo de texto es así.
Después de agregar relleno en el lado izquierdo, mi campo de texto es ...
De esta manera, también podemos crear el lado derecho. (TextFieldName.rightViewMode = .always)
Si desea un código de tipo SharedInstance (escriba una vez, use todos los artículos), consulte el siguiente código.
Ahora llame a esta función así.
fuente
Solución simple de swift 3: agregue código para viewDidLoad:
No es necesario un código ridículamente largo
fuente
Utilice mi extensión Swift 5 probado:
Cómo utilizar
fuente
Para crear una vista de relleno para UITextField en Swift 5
fuente
Subclasificar UITextField es el camino a seguir. Abra un patio de juegos y agregue el siguiente código:
fuente
Aquí está la respuesta de Haagenti actualizada a Swift 4.2:
Referencia: Actualización a Swift 4.2 .
Editar : cuenta para borrar el botón.
fuente
Cree UIView con el espacio de relleno requerido y agréguelo al miembro textfield.leftView y establezca el miembro textfield.leftViewMode en UITextFieldViewMode.Always
fuente
Pon este código en tu
viewDidLoad()
:Esto funciona para mi :)
fuente
Esta línea de código me salvó:
Para Xamarin.iOS:
Para Swift:
fuente
La respuesta de ScareCrow en Swift 3
fuente
En Swift 3. Puede usar UITextField personalizado con sangría que se establece en su constructor. No necesita una declaración adicional en un controlador.
fuente
Manera fácil: hacer esto extendiendo UITextField
Luego puede configurar el relleno en cualquier borde de esta manera:
fuente
Prefiero usar la
IBDesignable
clase y lasIBInspectable
propiedades para permitirme configurar el relleno a través de los guiones gráficos de Xcode y mantenerlo reutilizable. También he actualizado el código para que funcione en Swift 4.fuente
* Extendiendo UITextField en Swift 5 *
fuente
fuente