美文网首页MAC & IOS移动开发iOS 开发
去除搜索框UISearchBar的背景

去除搜索框UISearchBar的背景

作者: JarodWang | 来源:发表于2016-07-01 11:23 被阅读146次

    在使用那个UISearchBar的时候我个人觉得那个灰色背景框很丑,,。。所以我就想把那个给清楚掉,结果设置背景为无色,什么什么的都设置完了还是不行。然后我去网上看了一下很多人都写了那个遍历subviews这个数组。。。。可是呢还是一样的效果。然后我就各种的乱试,得出了以下两种解决的方法。

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

    2.至于这种呢就取巧于那个subviews的方法了。这个方法跟我们的版本有关的,所以最先得判断版本了。iOS7.0以上有两层的subviews,以下有一层。刚刚好7.0呢就没有你可以直接设置背景颜色和那个barTinColor味无色就好了。接下来看代码

    也是两种写法。

    (1)

    floatversion = [[[UIDevicecurrentDevice]systemVersion]floatValue];

    if(version == 7.0) {

    _searchBar.backgroundColor= [UIColorclearColor];

    _searchBar.barTintColor= [UIColorclearColor];

    }else{

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

    UIView* backView =_searchBar.subviews[i];

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

    [backViewremoveFromSuperview];

    [_searchBarsetBackgroundColor:[UIColorclearColor]];

    break;

    }else{

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

    for(intj = 0;j

    UIView* barView = arr[i];

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

    [barViewremoveFromSuperview];

    [_searchBarsetBackgroundColor:[UIColorclearColor]];

    break;

    }

    }

    }

    }

    }

    (2)

    floatversion = [[[UIDevicecurrentDevice]systemVersion]floatValue];

    if([_searchBarrespondsToSelector:@selector(barTintColor)]) {

    floatiosversion7_1 = 7.1;

    if(version >= iosversion7_1)        {

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

    [_searchBarsetBackgroundColor:[UIColorclearColor]];

    }

    else{//iOS7.0

    [_searchBarsetBarTintColor:[UIColorclearColor]];

    [_searchBarsetBackgroundColor:[UIColorclearColor]];

    }

    }

    else{

    //iOS7.0以下

    [[_searchBar.subviewsobjectAtIndex:0]removeFromSuperview];

    [_searchBarsetBackgroundColor:[UIColorclearColor]];

    }

    看起来你们觉得那个更好呢?是不是感觉第二个更好些?简单的代码一目了然。。。。。其实呢为了避免有不必要的误差产生呢我还是喜欢第一种。此文仅作为参考,如有错误的地方忘给点建议改正谢谢。

    相关文章

      网友评论

        本文标题:去除搜索框UISearchBar的背景

        本文链接:https://www.haomeiwen.com/subject/sdbfjttx.html