2017-08-31 85 views
0

我在我的項目中使用了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

回答

1

我有類似的問題,這聽起來很有趣,但它可能會導致問題。我相信你的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

謝謝,還有一個問題,如何在圖像的底部和右側添加一些空間? –

0

設定框架:

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