在SearchBarStyle为UISearchBarStyleProminent的情况下才能改变颜色,UISearchBarStyleMinimal的情况则不可以
一开始的情况为
最外面红色的为一个普通的view的背景色
中间的灰色为SearchBarBackGroup,可以通过设置barTintColor设置它的颜色
最里面的就是我们需要改变的TextField的颜色
在我们把SearchBar的背景色设为和最外面的view背景色一样的时候
发现会有上下两行的横线,那么我们不需要它的情况下怎么办?
[self.SearchBar.subviews.firstObject.subviews.firstObject removeFromSuperview];
这行代码就是删掉SearchBar的背景色,有的时候需要先强制转换成UIView才可以继续
[((UIView *)self.SearchBar.subviews.firstObject).subviews.firstObject removeFromSuperview];
去除完之后我们就可以开始改输入框颜色了,不过要是不在意线的话可以直接跳到下一步
在其他博客中,我发现只要一次寻找子视图就可以,这里我是需要两次才能找到,原因暂时不明
NSLog(@"%@",self.SearchBar.subviews.firstObject.subviews.lastObject);
可以通过判断输出是什么类型的来判断是不是需要的子视图,如果是我们需要的子视图的话,它的类型应该是UISearchBarTextField
而我们要改变颜色的输入框就是这个UISearchBarTextField
UITextField *field = self.SearchBar.subviews.firstObject.subviews.lastObject;
field.backgroundColor = [UIColor blackColor];
所以我们只要截取到并且把赋值到field之中就可以,然后就可以想操作其他field的一样操作它。
The End