iOS修改UISearchBar背景颜色

貌似很简单的事啊,直接用:

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
        }
    }
}

猜你喜欢

转载自blog.csdn.net/mydo/article/details/80884570