Me gustaría agregar un icono / imagen en UITextField. El icono / imagen debe dejarse como marcador de posición.
Probé esto:
var imageView = UIImageView();
var image = UIImage(named: "email.png");
imageView.image = image;
emailField.leftView = imageView;
Gracias.
emailField.leftView = UIImageView(image: UIImage(named: "search"))
:)@IBDesignable
podemos hacer esto de una manera elegante como en este ejemplo: stackoverflow.com/a/51841433/8238512Respuestas:
Intenta agregar
emailField.leftViewMode = UITextFieldViewMode.Always
(El valor predeterminado
leftViewMode
esNever
)Respuesta actualizada para Swift 4
fuente
UITextFieldViewMode.Always
)? ¿Tienes idea de qué fue lo que no funcionó? (por ejemplo, ¿se compiló?)emailTextField
¿realmente cambia? ¿Y estás seguro de que la imagen está ahí? Por ejemplo, cree otro UIImageView y cárgueloimage
en ese para verificar que funciona.imageView1.frame = CGRect(x: 5, y: 0, width: userName.frame.height, height: userName.frame.height) view.addSubview(imageView1)
Sahil tiene una gran respuesta y quería tomar eso y expandirlo en un @IBDesignable para que los desarrolladores puedan agregar imágenes a sus UITextFields en el Storyboard.
Rápido 4.2
¿Que está sucediendo aquí?
Este designable le permite:
Notas
Designable en el Storyboard
En tiempo de ejecución
fuente
Solo quiero agregar algo más aquí:
Si desea agregar la imagen en
UITextField
el lado izquierdo, use laleftView
propiedad deUITextField
NOTA: No olvide establecer
leftViewMode
enUITextFieldViewMode.Always
y para el derechorightViewMode
alUITextFieldViewMode.Always and
valor predeterminadoUITextFieldViewModeNever
por ejemplo
Para agregar una imagen en el lado izquierdo
Para agregar una imagen en el lado derecho
NOTA: algunas cosas que debe tener en cuenta al agregar una imagen
UITextField
en el lado izquierdo o derecho.No olvides dar un marco del
ImageView
que vas a agregarUITextField
let imageView = UIImageView (marco: CGRect (x: 0, y: 0, ancho: 20, alto: 20))
si el fondo de la imagen es blanco, la imagen no se verá en
UITextField
si desea agregar una imagen a la posición específica, debe agregarla
ImageView
como subvista deUITextField
.Actualización para Swift 3.0
@Mark Moeykens lo gastó maravillosamente y lo hizo @IBDesignable .
Modifiqué y agregué algunas características más (agregue Bottom Line y relleno para la imagen derecha) en esto.
NOTA si desea agregar una imagen en el lado derecho, puede seleccionar la
Force Right-to-Left
opción en elsemantic
generador de interfaces (pero para el relleno de la imagen derecha no funcionará hasta que anule el método rightViewRect).He modificado esto y puedo descargar la fuente desde aquí ImageTextField
fuente
Otra forma, inspirada en publicaciones anteriores para hacer una extensión.
Podemos poner la imagen a la derecha oa la izquierda
Utilizar :
Disfruta :)
fuente
Para crear relleno, me gusta colocar la imagen dentro de una vista de contenedor. Puede eliminar el color de fondo una vez que esté satisfecho con la ubicación del icono.
fuente
para Swift 3.0 agregue una imagen en el lado izquierdo del campo de texto
fuente
Rápido 5
He creado la extensión
Resultado
fuente
Creé un IBDesignable simple. Úsalo como quieras. Simplemente haga que su UITextField confirme a esta clase.
fuente
Otra forma de establecer el icono de marcador de posición y establecer el relleno en TextField.
fuente
2020 - solución razonable
Respecto a esta locura de Apple.
Esta es quizás la forma más "clara" y sencilla de hacerlo:
Primero, debes mover correctamente el texto.
Tenga en cuenta este control de calidad crítico: https://stackoverflow.com/a/27066764/294884
Continuando, ahora tenemos que hacer y mover la imagen de la izquierda:
Esta parece ser la forma más clara y confiable de hacerlo.
fuente
Swift 3.1
fuente
Puede poner esta función en su archivo global o por encima de su clase para que pueda acceder a ella en toda la aplicación. Después de este procedimiento, puede llamar a esta función según sus requisitos en la aplicación.
fuente
¿Por qué no opta por el enfoque más fácil? Para la mayoría de los casos, desea agregar íconos como fuente impresionante ... Simplemente use la biblioteca de fuente impresionante y sería tan fácil agregar un ícono a un campo de texto como este:
Debería instalar primero esta biblioteca rápida: https://github.com/Vaberer/Font-Awesome-Swift
fuente
Esta es una versión modificada de la respuesta de Mark Moeykens con un relleno adicional entre la imagen y el texto y un tamaño de imagen ajustable en caso de que alguien lo necesite.
Rápido 4
fuente
Rápido 5
Similar a @Markus, pero en Swift 5 :
fuente
SwiftUI
Resultados
fuente
Usando la extensión en Swift4, podemos colocar fácilmente la imagen a la derecha oa la izquierda con relleno en TextField.
Use el código como para la configuración de la imagen izquierda: -
Salida :)
fuente