如何更改UISearchBarsearch文本颜色?

如何更改UISearchBar的文本颜色?

您必须访问UISearchBar中的UITextField 。 你可以通过使用valueForKey("searchField")

 var textFieldInsideSearchBar = yourSearchbar.valueForKey("searchField") as? UITextField textFieldInsideSearchBar?.textColor = yourcolor 

Swift 3更新

 let textFieldInsideSearchBar = yourSearchbar.value(forKey: "searchField") as? UITextField textFieldInsideSearchBar?.textColor = yourcolor 

如果你想为故事板中的UISearchBar(无代码)设置文本颜色,那么很容易做到(在身份检查器中)。 这里是search栏的红色文字。

在这里输入图像说明

 public extension UISearchBar { public func setTextColor(color: UIColor) { let svs = subviews.flatMap { $0.subviews } guard let tf = (svs.filter { $0 is UITextField }).first as? UITextField else { return } tf.textColor = color } } 

我认为最方便的方法是在UISearchBar设置textColor属性。

Swift 3.0

  extension UISearchBar { var textColor:UIColor? { get { if let textField = self.value(forKey: "searchField") as? UITextField { return textField.textColor } else { return nil } } set (newValue) { if let textField = self.value(forKey: "searchField") as? UITextField { textField.textColor = newValue } } } } 

用法

 searchBar.textColor = UIColor.blue // Your color 

Swift 2.3

 extension UISearchBar { var textColor:UIColor? { get { if let textField = self.valueForKey("searchField") as? UITextField { return textField.textColor } else { return nil } } set (newValue) { if let textField = self.valueForKey("searchField") as? UITextField { textField.textColor = newValue } } } } 

你可以使用它:

 searchBar.textColor = UIColor.blueColor() // Your color 

您可以通过访问searchBar中的UITextField来完成此操作,然后可以更改其背景颜色,文本颜色和所有其他UITextField属性

添加下面的扩展名来访问textField

 extension UISearchBar { /// Return text field inside a search bar var textField: UITextField? { let subViews = subviews.flatMap { $0.subviews } guard let textField = (subViews.filter { $0 is UITextField }).first as? UITextField else { return nil } return textField } } 

这适用于我在iOS 11,Xcode 9:

 UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).textColor = UIColor.blue 

我把它写在AppDelegate但是如果你把它放在别的地方,我想它也可以。

如果您只需要在黑暗的背景下使其可读,则可以更改barStyle。 以下使search栏中的文本和button变为白色:

 searchController.searchBar.barStyle = .black