系统控件UISearchBar的组成部分主要有两个部分,一个是UISearchBarBackground,另一个是UITextField。
1、修改UISearchBarBackground的颜色
barTintColor是UISearchBar提供的一个系统方法,其作用就是修改UISearchBarBackground的颜色。
_searchBar.barTintColor = [UIColor colorWithRed:63.0/255.0 green:66.0/255.0 blue:75.0/255.0 alpha:1.000];
2、边框黑线修改
通过上述方法修改UISearchBarBackground后,会发现UISearchBar默认有个黑色边框,上下两条,很影响整体效果,那怎么去除呢?
我这边提供一个最简单的方法,如下:
[_searchBar setBackgroundImage:[UIImage new]];
OK,你没看错,就是通过设置背景图片。
3、搜索框背景色修改
UISearchBar并没有提供直接修改的方法,但我们知道它内部其实就是一个UITextField,那么我们就可以通过找到这个UITextField,通过改UITextField来改变搜索框背景色,具体如下:
UIView *searchTextField = [[[_searchBar.subviews firstObject] subviews] lastObject];
searchTextField.backgroundColor = [UIColor colorWithRed:79.0/255.0 green:82.0/255.0 blue:91.0/255.0 alpha:1.000];
_searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
_searchBar.delegate = self;
//更改UISearchBarBackground
_searchBar.barTintColor = [UIColor colorWithRed:63.0/255.0 green:66.0/255.0 blue:75.0/255.0 alpha:1.000];
//去除边框线
[_searchBar setBackgroundImage:[UIImage new]];
//更改TextField
UIView *searchTextField = [[[_searchBar.subviews firstObject] subviews] lastObject];
searchTextField.backgroundColor = [UIColor colorWithRed:79.0/255.0 green:82.0/255.0 blue:91.0/255.0 alpha:1.000];
searchTextField.layer.cornerRadius = 15;
searchTextField.layer.masksToBounds = YES;
[self.view addSubview:_searchBar];
最终效果图如下: