我已经找了好几个小时的答案了,但是我仍然不知道如何改变一个清除按钮的颜色。
所有答案都解释了如何设置一个新的清除按钮图标,但我只想改变它的颜色为白色。。即使我将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/

10-08 17:21