當你看到這篇博客你就已經發現了用_searchBar.backgroundColor = [UIColor clearColor];來設置UISearchBar的顏色完全沒有效果;
並且,有些方法是想通過遍歷出UISearchBarBackground來移除它實現背景透明,也並沒有什么卵用。
下面這個方法,你不用糾結它是怎么實現的,直接復制拿去用:
_searchBar.backgroundImage = [self imageWithColor:[UIColor clearColor] size:_searchBar.bounds.size];
/** 取消searchBar背景色 */ - (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size { CGRect rect = CGRectMake(0, 0, size.width, size.height); UIGraphicsBeginImageContext(rect.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [color CGColor]); CGContextFillRect(context, rect); UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; }
這樣你就可以發現背景色沒有了
別急,還沒完,在此之后你還可以設置自己想要的顏色,還可以設置背景圖
/** 設置背景圖片 */ [_searchBar setBackgroundImage:[UIImage imageNamed:@"imageView"]];
/** 設置背景色 */ [_searchBar setBackgroundColor:[UIColor redColor]];
/** 設置文本框背景 */ [_searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"imageView"] forState:UIControlStateNormal];
修改搜索框的背景色:
UITextField *searchField=[_searchBar valueForKey:@"_searchField"]; searchField.backgroundColor = GlobalColor;