[英]Change Tint color of CLEAR button inside UISearchBar NOT CANCEL BUTTON
我想自定義UISearchBar
的取消按鈕,當用戶鍵入文本時出現,清除文本,看圖像,我想更改紅色方塊內按鈕的色調顏色而不是“取消”按鈕文本
我嘗試過的:
[[UIButton appearanceWhenContainedIn:[UISearchBar class], nil] setTintColor:[UIColor redColor]];
但它改變了按鈕的顏色,文本“取消”而不是圖標,以清除文本字段內的文本
這不是一個重復的問題,因為我想改變默認清晰圖像的色調,而不是使用自定義圖像,如下所示:
但是對於UISearchBar
UIImage *imgClear = [UIImage imageNamed:@"clear"];
[mySearchBar setImage:imgClear forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal];
Swift
4.2,4.1 +
似乎來自Swift 4.1+
clearButton
的currentImage
nil
。 它可能適用於舊版本。
所以我創建了這個類,這里的附加功能是為clear
button
提供自己的圖像和顏色。
class SearchBar: UISearchBar {
var clearButtonImage: UIImage?
var clearButtonColor: UIColor = .white
override func layoutSubviews() {
super.layoutSubviews()
if let textField = self.value(forKey: "searchField") as? UITextField {
if let clearButton = textField.value(forKey: "clearButton") as? UIButton {
update(button: clearButton, image: self.clearButtonImage, color: clearButtonColor)
}
}
}
private func update(button: UIButton, image: UIImage?, color: UIColor) {
let image = (image ?? button.currentImage)?.withRenderingMode(.alwaysTemplate)
button.setImage(image, for: .normal)
button.setImage(image, for: .highlighted)
button.tintColor = color
}
}
所以現在你可以設置clearButton
圖像如下,使它工作,
let searchBar = SearchBar()
searchBar.clearButtonImage = UIImage(named: "clearIcon")
searchBar.clearButtonColor = .green
故事板或XIB
您必須將SearchBar
類設置為下面顯示的搜索欄的custom class
,
而outlet
如下設定圖像和顏色等
@IBOutlet private weak var searchBar: SearchBar!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.