修改searchbar在iOS7以下、iOS7、iOS7.1的背景色

来源:互联网 发布:meta分析数据提取表 编辑:程序博客网 时间:2024/04/30 21:35

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 allocinitWithFrame:CGRectMake(0032044)] 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 allocinitWithImage:[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 allocinitWithFrame:CGRectMake(04432041)];

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];

0 0
原创粉丝点击