在UITextfield中显示UIImage,尝试但不起作用

问题描述:

我在我的项目中使用了xcode8.3和Swift3。在UITextfield中显示UIImage,尝试但不起作用

我在故事板为UITextField,我在相应的控制器类中创建一个IBOutlet中:

@IBOutlet weak var myTextField: UITextField! 

我想显示在右边的文本框里面的小图片,我发现了一个solution here(虽然它在左侧显示图像)。

这是我的尝试:

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 
    } 

(在Xcode Assets.xcassets文件夹我有my_icon.png,[email protected][email protected]

当我在iPhone上运行代码时,我看不到my_icon显示在UITextField中的任何位置。我也试图在加载图片let image = UIImage(named: "my_icon.png");时添加“.png”后缀,但它也没有帮助。

为什么链接中的解决方案对我无效?

+0

在这里你有一个关于一堆信息https://stackoverflow.com/questions/27903500/swift -add-icon-image-in-uitextfield – GIJOW

+0

@GIJOW,我已经在我的问题中包含了这个链接,就像我说过的,我试过了,它对我不起作用。 –

+0

澄清问题:是'image'零?另外,您可能还需要为'imageView'设置一个框架。 – Larme

我有类似的问题,这听起来很有趣,但它可能会导致问题。我相信你的ImageView帧为0

所以

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

谢谢,它的工作原理。顺便说一句,如果我想稍后隐藏图像,最好将右视图模式设置为“从不”或更好地隐藏图像? –

+0

@ leem-fin:我个人更喜欢删除rightView,然后将模式设置为never,但将rightView的框架设置为CGRect.zero也可以。 –

+0

谢谢,还有一个问题,如何在图像的底部和右侧添加一些空间? –

设定框架:

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