UISearchBar的view层级关系在某个版本后发生了改变。
默认有一个UISearchBarBackground类的对象覆盖在searchBar上,所以直接设置searchBar.backgroundColor是无效的。需要移除这个UISearchBarBackground对象。
UISearchBarBackground并不是直接被添加到searchBar上的,我的推测是searchBar首先有一个类似于contentView的view,UISearchBarBackground添加在contentView上面。
默认有一个UISearchBarBackground类的对象覆盖在searchBar上,所以直接设置searchBar.backgroundColor是无效的。需要移除这个UISearchBarBackground对象。
UISearchBarBackground并不是直接被添加到searchBar上的,我的推测是searchBar首先有一个类似于contentView的view,UISearchBarBackground添加在contentView上面。
实现代码如下:
_searchBar.backgroundColor = [UIColor orangeColor]; // 设置成你需要的颜色
for (UIView *bottomView in _searchBar.subviews)
{
if ([bottomView isKindOfClass:[UIView class]]) {
for (id subview in bottomView.subviews) {
if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
[subview removeFromSuperview];
}
}
}
}