我已经找了好几个小时的答案了,但是我仍然不知道如何改变一个清除按钮的颜色。
所有答案都解释了如何设置一个新的清除按钮图标,但我只想改变它的颜色为白色。。即使我将UISearchBar
更改为黑色,清除按钮仍保持灰色。我可能没有上网查过,但似乎不可能。
谢谢
最佳答案
可以使用图标字体,为图像绘制字符串,然后使用它设置图标。我为此创建了一个扩展:
extension UISearchBar {
func set_text_image(text: NSString, icon:UISearchBarIcon, attribute:LTDictStrObj? = nil, state:UIControlState = .Normal) {
var textColor: UIColor = UIColor.whiteColor()
var textFont: UIFont = UIFont(name: "FontAwesome", size: 15)!
UIGraphicsBeginImageContext(CGSizeMake(15, 15))
var attr = attribute
if attr == nil {
attr = [
NSFontAttributeName: textFont,
NSForegroundColorAttributeName: textColor,
]
}
text.drawInRect(CGRectMake(0, 0, 15, 15), withAttributes: attr)
var image: UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.setImage(image, forSearchBarIcon:icon, state:state)
}
}
要使用它,您需要下载FontAwesome并将其作为用户字体添加到项目中,然后调用:
search_bar.set_text_image("", icon:.Clear)
search_bar.set_text_image("", icon:.Search)
因此UISearchBar看起来像:https://www.dropbox.com/s/fx7dbtoxd785zo7/Screenshot%202015-05-12%2011.36.02.png?dl=0
要选择图标,请转到备忘单并复制粘贴图标到源代码中:http://fortawesome.github.io/Font-Awesome/cheatsheet/
扩展也是LSwift的一部分:http://superarts.github.io/LSwift/