簡體   English   中英

更改UISearchBar中的CLEAR按鈕的色調顏色而不是取消按鈕

[英]Change Tint color of CLEAR button inside UISearchBar NOT CANCEL BUTTON

我想自定義UISearchBar的取消按鈕,當用戶鍵入文本時出現,清除文本,看圖像,我想更改紅色方塊內按鈕的色調顏色而不是“取消”按鈕文本

我嘗試過的:

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

但它改變了按鈕的顏色,文本“取消”而不是圖標,以清除文本字段內的文本

這不是一個重復的問題,因為我想改變默認清晰圖像的色調,而不是使用自定義圖像,如下所示:

如何更改UITextField上清除按鈕的色調顏色

但是對於UISearchBar

在此輸入圖像描述

UIImage *imgClear = [UIImage imageNamed:@"clear"];
[mySearchBar setImage:imgClear forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal];

Swift 4.2,4.1 +

似乎來自Swift 4.1+ clearButtoncurrentImage 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM