首页 > 代码库 > 【IOS】UISearchBar背景透明,去掉背景,自定义背景

【IOS】UISearchBar背景透明,去掉背景,自定义背景

ios6,ios7,ios7.1下设置UISearchbar的背景色

ios系统升级到7.1后,原来在7.0下显示正常的UISearchbar现在又出现问题了。究其原因,是由于UISearchbar的subview又做修改了。

 1 //修改searchBar样式 2  3 - (void)changeSearchBar { 4  5     float version = [[[UIDevice currentDevice] systemVersion] floatValue]; 6  7     if ([_searchBar respondsToSelector:@selector(barTintColor)]) { 8  9         float iosversion7_1 = 7.1;10 11         if (version >= iosversion7_1)        {12 13             //iOS7.114 15             [[[[_searchBar.subviews objectAtIndex:0] subviews] objectAtIndex:0] removeFromSuperview];16 17             [_searchBar setBackgroundColor:[UIColor clearColor]];18 19         }20 21         else {            //iOS7.022 23             [_searchBar setBarTintColor:[UIColor clearColor]];24 25             [_searchBar setBackgroundColor:[UIColor clearColor]];26 27         }28 29     }30 31     else {32 33         //iOS7.0以下34 35         [[_searchBar.subviews objectAtIndex:0] removeFromSuperview];36 37 //        [_searchBar setBackgroundColor:[UIColor clearColor]];38 39         [_searchBar setBackgroundColor:[UIColor colorWithPatternImage:[UIImageimageNamed:@"searchBarBg.png"]]];40 41     }}

 

 

//一行代码搞定去掉去掉背景

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

----------------------------------------------------------------------

 

注意:

去掉搜索控件的背景之后在下方会出现一条黑线,我们要把那条黑线去除

1 CGRect rect = self.searchBar.frame;2 UIView *lineView = [[UIView alloc]initWithFrame:CGRectMake(0, rect.size.height-2,rect.size.width, 2)];3 lineView.backgroundColor = [UIColor whiteColor];4 [self.searchBar addSubview:lineView];

 

 1 /*UISearchBar背景透明,去掉背景,自定义背景*/ 2  3 seachBar=[[UISearchBar alloc] init]; 4  5   6  7 //修改搜索框背景 8  9 seachBar.backgroundColor=[UIColor clearColor];10 11 //去掉搜索框背景12 13 //1.14 15 [[searchbar.subviews objectAtIndex:0]removeFromSuperview];16 17 //2.18 19 for (UIView *subview in seachBar.subviews) 20 21 {  22 23 if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")])24 25 {  26 27 [subview removeFromSuperview];  28 29 break;  30 31 }  32 33 } 34 35 //3自定义背景36 37 UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"40-di.png"]];38 39     [mySearchBar insertSubview:imageView atIndex:1];40 41     [imageView release];42 43 //4输入搜索文字时隐藏搜索按钮,清空时显示44 45 - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {  46 47 searchBar.showsScopeBar = YES;  48 49 [searchBar sizeToFit];  50 51 [searchBar setShowsCancelButton:YES animated:YES];  52 53 return YES;  54 55 }  56 57 - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {  58 59 searchBar.showsScopeBar = NO;  60 61 [searchBar sizeToFit];  62 63 [searchBar setShowsCancelButton:NO animated:YES];  64 65 return YES;  66 67 }  68 69 //改变搜索按钮文字70 71 //改变UISearchBar取消按钮字体72 73 for(id cc in [searchBar subviews])74 75     {76 77 if([cc isKindOfClass:[UIButton class]])78 79         {80 81             UIButton *btn = (UIButton *)cc;82 83             [btn setTitle:@"搜索"  forState:UIControlStateNormal];84 85         }86 87 }

 

【IOS】UISearchBar背景透明,去掉背景,自定义背景