IOS:修改UISearchBar内部的背景颜色

我知道如何修改和移除UISearchBar的背景颜色

[[self.searchBar.subviews objectAtIndex:0] removeFromSuperview];
self.searchBar.backgroundColor = [UIColor grayColor];

enter image description here

但是不知道怎么修改内部的背景颜色

enter image description here

在IOS4.3及以上版本用的。

可以改变内部背景图片的代码:

UITextField *searchField;
NSUInteger numViews = [searchBar.subviews count];
for(int i = 0; i < numViews; i++) {
    if([[searchBar.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) { 
        searchField = [searchBar.subviews objectAtIndex:i];
    }
}
if(!(searchField == nil)) {
    searchField.textColor = [UIColor whiteColor];
    [searchField setBackground: [UIImage imageNamed:@"yourImage"]];//在这添加灰色的图片
    [searchField setBorderStyle:UITextBorderStyleNone];
}

修改UISearchBarIcon的代码:

 UIImageView *searchIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourSearchBarIconImage"]];
searchIcon.frame = CGRectMake(10, 10, 24, 24);
[searchBar addSubview:searchIcon];
[searchIcon release];

在IOS5以上的版本修改searcBar图标

- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state