在许多需求下需要改变SearchBar的背景图片今天试了一下代码如下:

方法一:

SearchBar改变背景颜色
 
    UISearchBar *searchBar=[[UISearchBar alloc]initWithFrame:CGRectMake(0, 100, 320, 44)];
    [self.view addSubview:searchBar];
    
    for (UIView *obj in [searchBar subviews]) {
        for (UIView *objs in [obj subviews]) {
            if ([objs isKindOfClass:NSClassFromString(@"UISearchBarBackground")]){
                [objs removeFromSuperview];
            }
        }
        if ([obj isKindOfClass:NSClassFromString(@"UISearchBarBackground")]){
            [obj removeFromSuperview];
        }
    }

   searchBar.backgroundColor=[UIColor colorWithRed:0.9686 green:0.9686 blue:0.9686 alpha:1.0];

 
SearchBar改变背景颜色

方法二:

SearchBar改变背景颜色
- (void)viewDidLoad
{
    [super viewDidLoad];

    UISearchBar *searchBar=[[UISearchBar alloc]initWithFrame:CGRectMake(0, 100, 320, 44)];
    [self.view addSubview:searchBar];
    searchBar.backgroundImage = [self imageWithColor:[UIColor clearColor]];
    
}
- (UIImage *)imageWithColor:(UIColor *)color
{
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return image;
}
SearchBar改变背景颜色

这两种方法都可以改变searchBar 的背景颜色,也可以通过断点调试来查看苹果内部信息。

相关文章: