Je voudrais ajouter une icône / image dans UITextField. L'icône / l'image doit être laissée à l'espace réservé.
J'ai essayé ceci:
var imageView = UIImageView();
var image = UIImage(named: "email.png");
imageView.image = image;
emailField.leftView = imageView;
Merci.
emailField.leftView = UIImageView(image: UIImage(named: "search"))
:)@IBDesignable
nous pouvons le faire de manière élégante comme dans cet exemple: stackoverflow.com/a/51841433/8238512Réponses:
Essayez d'ajouter
emailField.leftViewMode = UITextFieldViewMode.Always
(La valeur par défaut
leftViewMode
estNever
)Réponse mise à jour pour Swift 4
la source
UITextFieldViewMode.Always
)? Avez-vous une idée de ce qui n'a pas fonctionné? (Par exemple, a-t-il compilé?)emailTextField
que ça change vraiment? Et êtes-vous sûr que l'image est là? Par exemple, créez un autre UIImageView et chargez leimage
dans celui-ci pour vérifier que cela fonctionne.imageView1.frame = CGRect(x: 5, y: 0, width: userName.frame.height, height: userName.frame.height) view.addSubview(imageView1)
Sahil a une excellente réponse et je voulais prendre cela et l'étendre dans un @IBDesignable afin que les développeurs puissent ajouter des images à leurs UITextFields sur le Storyboard.
Swift 4.2
Que se passe-t-il ici?
Ce designable vous permet de:
Remarques
Designable dans le Storyboard
Lors de l'exécution
la source
Je veux juste ajouter quelque chose ici:
Si vous souhaitez ajouter l'image sur
UITextField
le côté gauche, utilisez laleftView
propriété deUITextField
REMARQUE: n'oubliez pas de définir
leftViewMode
surUITextFieldViewMode.Always
et pour que le droitrightViewMode
parUITextFieldViewMode.Always and
défaut soitUITextFieldViewModeNever
par exemple
Pour ajouter une image sur le côté gauche
Pour ajouter une image sur le côté droit
REMARQUE: certaines choses dont vous devez faire attention lors de l'ajout d'une image sur
UITextField
le côté gauche ou droit.N'oubliez pas de donner un cadre
ImageView
dont vous allez ajouterUITextField
laissez imageView = UIImageView (cadre: CGRect (x: 0, y: 0, largeur: 20, hauteur: 20))
si l'arrière-plan de votre image est blanc, l'image ne sera pas visible sur
UITextField
si vous souhaitez ajouter une image à la position spécifique que vous devez ajouter
ImageView
comme sous-vue deUITextField
.Mise à jour pour Swift 3.0
@Mark Moeykens l'a magnifiquement dépensé et le rend @IBDesignable .
J'ai modifié et ajouté quelques fonctionnalités supplémentaires (ajouter la ligne du bas et le rembourrage pour l'image de droite).
REMARQUE si vous souhaitez ajouter une image sur le côté droit, vous pouvez sélectionner l'
Force Right-to-Left
option danssemantic
dans le générateur d'interface (mais pour le bon remplissage d'image ne fonctionnera pas tant que vous n'aurez pas remplacé la méthode rightViewRect).J'ai modifié cela et je peux télécharger la source à partir d'ici ImageTextField
la source
Une autre façon, inspirée des articles précédents, de créer une extension.
On peut mettre l'image à droite ou à gauche
Utilisation :
Prendre plaisir :)
la source
Pour créer un remplissage, j'aime placer l'image à l'intérieur d'une vue de conteneur. Vous pouvez supprimer la couleur d'arrière-plan une fois que vous êtes satisfait du placement de l'icône.
la source
pour Swift 3.0 ajouter une image sur le côté gauche de textField
la source
Swift 5
J'ai créé une extension
Résultat
la source
2020 - solution raisonnable
En ce qui concerne cette folie d'Apple.
Voici peut-être la manière la plus "claire" et la plus simple de le faire:
Tout d'abord, vous devez déplacer correctement le texte.
Notez ce contrôle qualité critique: https://stackoverflow.com/a/27066764/294884
en continuant, nous devons maintenant faire et déplacer l'image de gauche:
Cela semble être le moyen le plus clair et le plus fiable de le faire.
la source
J'ai créé un simple IBDesignable. Utilisez-le comme vous le souhaitez. Confirmez simplement votre UITextField à cette classe.
la source
Une autre façon de définir l'icône d'espace réservé et de définir le remplissage sur TextField.
la source
Swift 3.1
la source
Vous pouvez mettre cette fonction dans votre fichier global ou au-dessus de votre classe afin de pouvoir y accéder dans toute l'application. Après cette procédure, vous pouvez appeler cette fonction selon vos besoins dans l'application.
la source
Pourquoi ne pas opter pour l'approche la plus simple. Dans la plupart des cas, vous souhaitez ajouter des icônes telles que font awesome ... Utilisez simplement la bibliothèque font awesome et il serait aussi facile d'ajouter une icône à un champ de texte que ceci:
Vous devrez d'abord installer cette bibliothèque rapide: https://github.com/Vaberer/Font-Awesome-Swift
la source
Il s'agit d'une version modifiée de la réponse de Mark Moeykens avec un remplissage supplémentaire entre l'image et le texte et une taille d'image réglable au cas où quelqu'un en aurait besoin.
Swift 4
la source
Swift 5
Similaire à @Markus, mais dans Swift 5 :
la source
SwiftUI
Résultats
la source
En utilisant l'extension dans Swift4, nous pouvons facilement mettre l'image à droite ou à gauche avec un rembourrage à TextField.
Utilisez le code comme pour la configuration de l'image de gauche: -
Production :)
la source