2017-08-31 2 views
0

J'utilise xcode8.3 et Swift3 dans mon projet.Afficher UIImage dans UITextfield, essayé mais ne fonctionne pas

J'ai un UITextField en story-board, je créé un IBOutlet en classe contrôleur correspondant:

@IBOutlet weak var myTextField: UITextField! 

Je voudrais montrer une petite image sur le côté droit à l'intérieur du champ de texte, j'ai trouvé un solution here (bien que il montre l'image sur le côté gauche).

ce que j'essayé:

override func viewDidLoad() { 
     super.viewDidLoad() 

     let imageView = UIImageView(); 
     let image = UIImage(named: "my_icon"); 
     imageView.image = image; 

     self.myTextField.rightView = imageView 
     self.myTextField.rightViewMode = .always 
    } 

(dans Xcode Assets.xcassets dossier Je my_icon.png, [email protected], [email protected])

Lorsque j'exécute le code sur iPhone, je ne vois aucun my_icon s'afficher dans UITextField. J'ai également essayé d'ajouter le suffixe ".png" en chargeant l'image let image = UIImage(named: "my_icon.png");, cela n'aide pas non plus. Pourquoi la solution dans le lien ne fonctionne pas pour moi?

Pourquoi la solution dans le lien ne fonctionne pas pour moi?

+0

ici vous avez un tas d'informations sur https://stackoverflow.com/questions/27903500/swift -add-icon-image-in-uitextfield – GIJOW

+0

@GIJOW, j'ai déjà inclus ce lien dans ma question, comme je l'ai dit, je l'ai essayé, ça ne marche pas pour moi. –

+0

Clarifier les problèmes: l'image est-elle nulle? Vous pouvez également définir un cadre pour 'imageView'. – Larme

Répondre

1

J'ai eu un problème similaire, cela semble drôle mais cela peut causer le problème. Je crois que votre cadre de imageView est 0.

Alors

let imageView = UIImageView(); 
    let image = UIImage(named: "my_icon"); 
    imageView.image = image; 
    imageView.frame = CGRect(x: 0, y: 0, width: imageView.intrinsicContentSize.width, height: imageView.intrinsicContentSize.height) 
    self.myTextField.rightView = imageView 
    self.myTextField.rightViewMode = .always 
+0

Merci, cela fonctionne. BTW, si je veux cacher l'image plus tard, est-il préférable de mettre le rightViewMode à Never ou est-il préférable de cacher l'image? –

+0

@ leem-fin: Personnellement, je préfère supprimer le rightView, puis régler le mode sur never, mais le réglage de l'image de rightView sur CGRect.zero fonctionne également. –

+0

Merci, une question de plus, comment ajouter de l'espace en bas et à droite de l'image? –

0

Armature:

imageView.frame = CGRect(x: 0, y: 0, width: 20, height: 20)