ios uiview csdn 如何去除uisearchbar默认的灰色背景颜色

 我来答
350117188
2016-08-14 · TA获得超过1115个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:89.9万
展开全部
在使用那个UISearchBar的时候我个人觉得那个灰色背景框很丑,,。。所以我就想把那个给清楚掉,结果设置背景为无色,什么什么的都设置完了还是不行。然后我去网上看了一下很多人都写了那个遍历subviews这个数组。。。。可是呢还是一样的效果。然后我就各种的乱试,得出了以下两种解决的方法。

1.设置你的barTinColor和你的背景相同就看不出来那个灰色框了哈哈哈哈,这个方法就是拿来骗人的。因为肉眼看不出来所以这是一个障眼法。不建议大家使用哈。当然你要是觉得其他方法麻烦呢用这个还是可以的啦。

2.至于这种呢就取巧于那个subviews的方法了。这个方法跟我们的版本有关的,所以最先得判断版本了。iOS7.0以上有两层的subviews,以下有一层。刚刚好7.0呢就没有你可以直接设置背景颜色和那个barTinColor味无色就好了。接下来看代码
也是两种写法。
(1)
float version = [[[UIDevice currentDevice] systemVersion] floatValue];

if (version == 7.0) {

_searchBar.backgroundColor = [UIColor clearColor];

_searchBar.barTintColor = [UIColor clearColor];

}else{

for(int i = 0 ;i < _searchBar.subviews.count;i++){

UIView * backView = _searchBar.subviews[i];

if ([backView isKindOfClass:NSClassFromString(@"UISearchBarBackground")] == YES) {

[backView removeFromSuperview];
[_searchBar setBackgroundColor:[UIColor clearColor]];
break;

}else{

NSArray * arr = _searchBar.subviews[i].subviews;

for(int j = 0;j<arr.count;j++ ){

UIView * barView = arr[i];

if ([barView isKindOfClass:NSClassFromString(@"UISearchBarBackground")] == YES) {

[barView removeFromSuperview];
[_searchBar setBackgroundColor:[UIColor clearColor]];
break;

}

}

}

}

}

(2)
float version = [[[UIDevice currentDevice] systemVersion] floatValue];

if ([_searchBar respondsToSelector:@selector(barTintColor)]) {

float iosversion7_1 = 7.1;

if (version >= iosversion7_1) {

[[[[_searchBar.subviews objectAtIndex:0] subviews] objectAtIndex:0] removeFromSuperview];

[_searchBar setBackgroundColor:[UIColor clearColor]];

}

else { //iOS7.0

[_searchBar setBarTintColor:[UIColor clearColor]];

[_searchBar setBackgroundColor:[UIColor clearColor]];

}

}

else {

//iOS7.0以下

[[_searchBar.subviews objectAtIndex:0] removeFromSuperview];

[_searchBar setBackgroundColor:[UIColor clearColor]];

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式