My search bar has default gray text, but I want it to be white text. I can't figure out how to use swift to change the scope bar text color, and you are unable to do it from storyboard. The closest I've found is
searchBarOutlet.setScopeBarButtonTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()], forState:UIControlState.Normal)
but alas this won't work either. Any ideas?
Its a little hard to access the Textfield inside the UISearchbar.
This is how it works:
for subView in self.searchBarOutlet.subviews
{
for secondLevelSubview in subView.subviews
{
if (secondLevelSubview.isKindOfClass(UITextField))
{
if let searchBarTextField:UITextField = secondLevelSubview as? UITextField
{
//set the color here like this:
searchBarTextField.textColor = UIColor.redColor()
break;
}
}
}
}
Shorter solution:
var textFieldInsideSearchBar = yourSearchbar.valueForKey(“searchField”) as? UITextField
textFieldInsideSearchBar?.textColor = yourcolor
// My preferred way of accessing searchField
if let searchTextField = self.searchBar.valueForKey("searchField") as? UITextField {
searchTextField.textAlignment = NSTextAlignment.Left
}
Swift 3
UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).textColor = UIColor.white
In my case for swift 3.0
(mySearchBar.value(forKey: "searchField") as? UITextField)?.textColor = UIColor.white