修改UISearchBar的背景色

原文:https://www.jianshu.com/p/26f951f2a9b5
UISearchBar是由两个subView组成的,一个是UISearchBarBackGround,另一个是UITextField. 但是没有直接操作背景的属性。方法一:是直接将 UISearchBarBackGround移去(这个方法ios13中不可用会闪退)。方法二:是创建一个UIView设置其颜色加载到UISearchBarBaceGround上作为UISearchBar的背景颜色

方法一:

UISearchBar *seachBar=[[UISearchBar alloc] init];
//修改搜索框背景
seachBar.backgroundColor=[UIColor clearColor];

//去掉搜索框背景
//1.
[[searchbar.subviews objectAtIndex:0]removeFromSuperview];

//2.
for (UIView *subview in seachBar.subviews)
{
if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")])
{
[subview removeFromSuperview];
break;
}
}

//3自定义背景
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"40-di.png"]];
[mySearchBar insertSubview:imageView atIndex:1];

//4输入搜索文字时隐藏搜索按钮,清空时显示

-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
searchBar.showsScopeBar = YES;
[searchBar sizeToFit];
[searchBar setShowsCancelButton:YES animated:YES];
return YES;
}
-(BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {
searchBar.showsScopeBar = NO;
[searchBar sizeToFit];
[searchBar setShowsCancelButton:NO animated:YES];
return YES;
}

//改变搜索按钮文字
//改变UISearchBar取消按钮字体
for(id cc in [searchBar subviews])
{
if([cc isKindOfClass:[UIButton class]])
{
UIButton *btn = (UIButton *)cc;
[btn setTitle:@"搜索" forState:UIControlStateNormal];
}

方法二:

UISearchBar* m_searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 44, 320, 41)];

m_searchBar.delegate = self;

m_searchBar.barStyle =UIBarStyleBlackTranslucent;

m_searchBar.autocorrectionType = UITextAutocorrectionTypeNo;

m_searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;

m_searchBar.placeholder = _(@"Search");

m_searchBar.keyboardType = UIKeyboardTypeDefault;

//--->背景图片

UIView *segment = [m_searchBar.subviews objectAtIndex:0];

UIImageView *bgImage = [[UIImageView alloc] initWithImage: [UIImageimageNamed:@"Images/search_bar_bg.png"]];

[segment addSubview: bgImage];

//<---背景图片

[self.view addSubview:m_searchBar];

[m_searchBar release];

你可能感兴趣的:(修改UISearchBar的背景色)