貌似很简单的事啊,直接用:
searchBar.backgroundColor = .red
不就OK了???
其实,不可以!!!
因为实际上UISearchBar的层次关系是这样的:
如果按照上面那样设置的将是UISearchBar自身的背景色,但是因为它上面还覆盖了UIView和UISearchBarBarBackground两个视图,所以你基本看不到效果(因为它们有略微透明,所以可以隐约看到一丢丢效果…)
所以正确的做法是想办法将UISearchBarBarBackground去掉,它是一个UIImageView对象:
///设置搜索条背景颜色
func setSearchBarBackgroundColor(to color:UIColor){
guard searchBar != nil else {return}
if let subView = searchBar.subviews.first{
if let view = subView.subviews.first,let imgView = view as? UIImageView{
imgView.alpha = 0.0
searchBar.backgroundColor = color
}
}
}