在 iOS 13 中更改搜索栏占位符文本颜色

Ray*_*ond 6 uisearchbar ios swift swift5 ios13

用户界面搜索栏

我正在尝试为里面的占位符文本设置颜色UISearchbar。现在我有以下代码。它不会在 iOS 13 上将白色设置为占位符文本。它适用于 iOS 12。似乎某些内容已损坏或 iOS 13 中的支持已被删除?

我已经搜索了很多并尝试了一些解决方法,但没有用。我还尝试为文本字段设置属性文本颜色,但这也不会改变颜色。

有没有可行的解决方案?

class CustomSearchBar: UISearchBar {

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func awakeFromNib() {
        super.awakeFromNib()

        self.sizeToFit()

        // Search text colour change
        let textFieldInsideSearchBar = self.value(forKey: "searchField") as? UITextField
        textFieldInsideSearchBar?.textColor = UIColor.white

        // Search Placeholder text colour change
        let placeHolderText = textFieldInsideSearchBar!.value(forKey: "placeholderLabel") as? UILabel
        placeHolderText?.textColor = UIColor.white // doesn't work
    }
}
Run Code Online (Sandbox Code Playgroud)

can*_*ine 5

viewDidLoad 为时过早

把代码放在viewDidAppear,viewDidLoad还为时过早。然后你的占位符应该变成白色

searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Enter Search Here", attributes: [NSAttributedString.Key.foregroundColor : UIColor.white])
Run Code Online (Sandbox Code Playgroud)


Shu*_*hra 0

尝试这个:

var searchBar: UISearchBar!
        if let textfield = searchBar.value(forKey: "searchField") as? UITextField {
            textfield.attributedPlaceholder = NSAttributedString(string: textfield.placeholder ?? "", attributes: [NSAttributedString.Key.foregroundColor : UIColor.white])
        }
Run Code Online (Sandbox Code Playgroud)