I used below code for changing UISearchBar textfield background color.
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setDefaultTextAttributes
Just try this code
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setBackgroundColor:[UIColor grayColor]];
OR
Try this
- (void)viewDidLoad
{
[super viewDidLoad];
//change the background color
[[self searchViewForTextFieldBg:self.searchTextfield] setBackgroundColor:[UIColor grayColor]];
//change the textcolor
self.searchTextfield.textColor =[UIColor greenColor];
}
- (UITextField*)searchViewForTextFieldBg:(UIView*)view
{
if ([view isKindOfClass:[UITextField class]]) {
return (UITextField*)view;
}
UITextField *searchTextField;
for (UIView *subview in view.subviews) {
searchTextField = [self searchViewForTextFieldBg:subview];
if (searchTextField) {
break;
}
}
return searchTextField;
}
Try this:
UITextField *searchField = [self.searchBar valueForKey:@"searchField"];
// To change background color
searchField.backgroundColor = [UIColor blueColor];
// To change text color
searchField.textColor = [UIColor redColor];
// To change placeholder text color
searchField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"Some Text"];
UILabel *placeholderLabel = [searchField valueForKey:@"placeholderLabel"];
placeholderLabel.textColor = [UIColor grayColor];