如何更改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