UISearchBar设置技巧(输入框,取消按钮等背景设置)

1. 设置光标和输入框的颜色

    self.searchBar.tintColor = [UIColor blueColor];

    [self.mySearchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"searchBarFieldBackground"] forState:UIControlStateNormal];

2. 修改placeHolder的文字颜色

for (UIView* subview in [[searchBar.subviews lastObject] subviews]) {

        if ([subview isKindOfClass:[UITextField class]]) {
            UITextField *textField = (UITextField*)subview;
            //修改输入字体的颜色
            textField.textColor = [UIColor redColor];              
            //修改输入框的颜色
            [textField setBackgroundColor:[UIColor grayColor]];      
            //修改placeholder的颜色
            [textField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];   
        } else if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")])
        {
            [subview removeFromSuperview];
        }
    }

3. 修改UISearchBar的取消按钮背景、搜索内容输入文本框背景和UISearchBar的背景

(1)、添加UISearchBar到父View

UISearchBar *searchBar = [[UISearchBar alloc]init];
searchBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
searchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
searchBar.delegate = self;
searchBar.placeholder = @"请输入搜索内容";
[self.view addSubview:searchBar];

(2)、修改搜索框背景

UIImage *img = [UIImage resizedImage:@"find_bg.png"];
[_searchBar setBackgroundImage:img];

(3)、修改搜索输入框内左侧的指示图标

[_searchBar setImage:[UIImage resizedImage:@"ic_search.png"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];

(4)、修改搜索输入文本的背景

[_searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"login_btn_input_side.png"] forState:UIControlStateNormal];

注:对于设计人员提供的搜索输入文本的背景,若提供的是一个圆角的小方块,按常理我们会使用拉伸图片的中间部分的方法,经测试显示效果如下:
若让设计人员重新提供一张固定高度的图片(比如高是60),当做搜索输入文本的背景,效果图如下:

(5)、修改UISearchBar右侧的取消按钮文字颜色及背景图片

-(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    [searchBar setShowsCancelButton:YES animated:YES];

    // 修改UISearchBar右侧的取消按钮文字颜色及背景图片
    for (UIView *searchbuttons in [searchBar subviews]){
        if ([searchbuttons isKindOfClass:[UIButton class]]) {
            UIButton *cancelButton = (UIButton*)searchbuttons;
            // 修改文字颜色
            [cancelButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
            [cancelButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];

            // 修改按钮背景
            [cancelButton setBackgroundImage:[UIImage resizedImage:@"login_btn_login.png"] forState:UIControlStateNormal];
            [cancelButton setBackgroundImage:nil forState:UIControlStateHighlighted];
        }
    }
}
注:修改取消按钮文字颜色及背景图片的代码片段,一定要放到取消按钮会显示代理方法中修改,否则遍历找不着呀,那就修改不了了。

4. 将UISearchBar放入导航栏的方法:

(1).通过navigationItem.titleView

    UISearchBar *searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(5.0f,20.0f,WCScreenW -10.0f,44.0f)];
    searchBar.delegate = self;
    [searchBar setPlaceholder:@"搜索"];

    //将搜索条放在一个UIView上
    UIView *searchView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, WCScreenW, 64)];
    searchView.backgroundColor = [UIColor clearColor];
    [searchView addSubview:searchBar];

    self.navigationItem.titleView = searchView;

(2).自己再添加一个NavigationBar

self.navigationController.navigationBar.hidden = YES;
    UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0,      self.view.bounds.size.width, 64)] ;
    navigationBar.barTintColor = [LYCCUISetting getInstance].colorTopView;
    [self.view addSubview:navigationBar];
    [navigationBar addSubview:self.searchBar];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值