[转]UISearchbar去除背景色的方法…

来源:互联网 发布:淘宝的港货可以买吗? 编辑:程序博客网 时间:2024/04/30 11:50

  通常使用UISearchbar都需要去除其背景色来与自己的界面风格保持协调,但是UISearchbar的设计随着iOS版本的升级不断地在发生着变化,下面我们通过分析UISearchbar在各个iOS版本下的视图层次结构来探讨去除其背景色的方法。

   首先使用UIView的私有方法recursiveDescription来看一下UISearchbar在iOS各个模拟器版本中的视图层次结构。这里使用调试命令po[self.searchBar recursiveDescription]来查看。

在iOS7.0之前,UISearchbar视图里直接包含UISearchBarBackground和UISearchBarTextField两个视图,在iOS7.0及之后,UISearchbar视图里包含的是一个UIView视图,UIView视图里才是UISearchBarBackground和UISearchBarTextField两个视图。经多次试验,发现去除UISearchbar视图里的UISearchBarBackground后UISearchbar的背景就透明了,代码如下:

代码如下:
for (UIView *view in self.searchBar.subviews) {
    // forbefore iOS7.0
    if ([viewisKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
       [view removeFromSuperview];
       break;
    }
    // for lateriOS7.0(include)
    if ([viewisKindOfClass:NSClassFromString(@"UIView")] &&view.subviews.count > 0) {
       [[view.subviews objectAtIndex:0] removeFromSuperview];
       break;
    }
}

   以上代码在iOS5/6/7/8.0beta下测试均有效,希望对需要使用UISearchBar的人有帮助。

0 0
原创粉丝点击