思路是獲取UISearchBar的子視圖,判斷他是否是輸入框(注意不要先入為主地認為是UITextField),最后修改背景色。至於UISearchBar的子視圖結構,在不同的iOS版本可能會不一樣,可通過遞歸地調用description方法獲知,具體可見鏈接http://blog.csdn.net/forestml2008/article/details/32914915
下面附上代碼:
1 - (void)setSearchTextFieldBackgroundColor:(UIColor *)backgroundColor
2 {
3 UIView *searchTextField = nil;
4 if (IsiOS7OrLater) {
5 // 經測試, 需要設置barTintColor后, 才能拿到UISearchBarTextField對象
6 self.barTintColor = [UIColor whiteColor];
7 searchTextField = [[[self.subviews firstObject] subviews] lastObject];
8 } else { // iOS6以下版本searchBar內部子視圖的結構不一樣
9 for (UIView *subView in self.subviews) {
10 if ([subView isKindOfClass:NSClassFromString(@"UISearchBarTextField")]) {
11 searchTextField = subView;
12 }
13 }
14 }
15
16 searchTextField.backgroundColor = backgroundColor;
17 }
