更改UISearchBar中的CLEAR按钮的色调颜色而不是取消按钮

时间:2016-05-25 11:10:42

标签: ios objective-c uisearchbar uiappearance

我想自定义UISearchBar内的取消按钮,用户输入文字时显示,清除文字,看图像,我想更改红色方块内按钮的色调颜色不是带有“取消”文字的按钮

我尝试过:

[[UIButton appearanceWhenContainedIn:[UISearchBar class], nil] setTintColor:[UIColor redColor]];

但它改变了按钮的颜色,文字“取消”而不是图标以清除文本字段内的文字

这不是一个重复的问题,因为我想改变默认清晰图像的色调,而不是使用自定义图像,如下所示:

How to change the tint color of the clear button on a UITextField

但是对于UISearchBar

enter image description here

2 个答案:

答案 0 :(得分:2)

label4.Text = $"({x1:0.00}, 0), ({x2:0.00},0)";

答案 1 :(得分:1)

Swift 4.2,4.1 +

对于currentImage中的nil,看来clearButtonSwift 4.1+。可能在旧版本中可用。

所以我创建了这个类,这里​​的补充是为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

enter image description here

并按如下所示outlet设置图像和颜色等

@IBOutlet private weak var searchBar: SearchBar!