if ([_searchBar respondsToSelector:@selector(barTintColor)]) {
float iOS7_1 = 7.1;
if (IOS_SYSTEM_VERSION >= iOS7_1)
{
//iOS7.1
[[[[_searchBar.subviews
objectAtIndex:0] subviews] objectAtIndex:0] removeFromSuperview];
[_searchBar setBackgroundColor:[UIColor colorWithRed:245.f/255.f
green:238.f/255.f blue:219.f/255.f alpha:1]];
}
else
{
//iOS7.0
[_searchBar setBarTintColor:[UIColor
clearColor]];
[_searchBar setBackgroundColor:[UIColor
colorWithRed:245.f/255.f green:238.f/255.f blue:219.f/255.f alpha:1]];
}
}
else
{
//iOS7.0以下
[[_searchBar.subviews objectAtIndex:0]
removeFromSuperview];
[_searchBar setBackgroundColor:[UIColor
colorWithRed:245.f/255.f green:238.f/255.f blue:219.f/255.f alpha:1]];
}
//////////////////
//创建搜索栏
_searchBar =
[[[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)] autorelease];
_searchBar.placeholder=@"请输入关键词搜索...";
_searchBar.delegate = self;
_searchBar.showsSearchResultsButton = YES;
//去除背景色
[[_searchBar.subviews objectAtIndex:0]removeFromSuperview];
for (UIView *subview in _searchBar.subviews)
{
if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")])
{
[subview removeFromSuperview];
break;
}
}
//atIndex:0 是background
//atIndex:1 是textfield
UIImageView *imageView
=
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"NavigationBar_Bg.png"]];
[_searchBar insertSubview:imageView atIndex:0];
[imageView release];
[self.view addSubview:_searchBar];
/////////////////
修改UISearchBar背景颜色
UISearchBar是由两个subView组成的,一个是UISearchBarBackGround,另一个是UITextField. 要IB中没有直接操作背景的属性。方法一:是直接将 UISearchBarBackGround移去。方法二:是创建一个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];
[imageView release];
//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;
}
//5、改变搜索按钮文字
//改变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];