2016-01-20 22 views
1

的佔位符有什麼辦法,我可以有一個放大鏡圖標貼到我的佔位符爲UITextField像下面:的UITextField與含有圖片和文字

Search Icon next to placeholder

我試圖重寫leftViewRectForBounds(bounds: CGRect):

override func leftViewRectForBounds(bounds: CGRect) -> CGRect { 
    var superRect = super.leftViewRectForBounds(bounds) 
    superRect.origin.x += 80 
    return superRect 
    } 

,但它沒有工作

+0

嘗試重寫'placeholderRectForBounds: '。 – Justlike

+0

佔位符位置完美,那麼如何幫助我? – Quantaliinuxite

+0

覆蓋UITextField並將圖像視圖添加爲子視圖。 – Justlike

回答

3

您可以使用NSAttributedStringNSTextAttachment將圖像添加到文本。

我沒有使用過他們一段時間,但我相信你可以做這樣的事情......

let magnifyingGlassAttachment = NSTextAttachment(data: nil, ofType: nil) 
magnifyingGlassAttachment.image = UIImage(named: "MagnifyingGlass") 

let magnifyingGlassString = NSAttributedString(attachment: magnifyingGlassAttachment) 

現在你可以使用magnifyingGlassString屬性串,並將其添加爲歸因文本的一部分UITextField

我相信你也可以精確指定放大鏡如何呈現旁邊的字符串(它是如何包裝等)

事情是這樣的......

var attributedText = NSMutableAttributedString(attributedString: magnifyingGlassString) 

let searchString = NSAttributedString(string: "Search for stuff") 

attributedText.appendAttributedString(searchString) 

textField.attributedPlaceholder = attributedText 
+0

這是一個美麗的解決方案,是否有任何方式的圖像可以居中與文本的其餘部分? – Quantaliinuxite

+0

@Quantaliinuxite嗨,是的,你可以這樣做,通過繼承'NSTextAttachment'就像這裏所示... http://stackoverflow.com/questions/26105803/center-nstextattachment-image-next-to-single-line-uilabel – Fogmeister

+0

我確實看到了,並不認爲它很優雅。好吧!謝謝 :) – Quantaliinuxite

1

您可以添加在TEX顯示該圖標圖像視圖或自定義視圖通過正確放置它並設置適當的佈局約束來實現。儘管你會將這個視圖添加爲兄弟,而不是子視圖。

+0

所以我會計算佔位符文本的大小,假設它位於中間,只需將圖標放置在計算幀的左側? – Quantaliinuxite

+0

所以這也適用,比其他答案多一點,但如果需要更多的定位控制,這是一個好方法。我應該補充說,如果將圖像視圖添加爲子視圖而不是同級視圖,則更容易。 – Quantaliinuxite