iOS Developer征服iOSiOS 开发每天分享优质文章

ios7以上修改UISearchBar的字体,背景颜色(内外框)

2017-04-01  本文已影响112人  一个xx的程序员
本人在工作之余需要使用UISearchBar,发现看似一个小小的搜索框其实还是有很多麻烦之处,尤其是在ios7以后,自己在网上找了很多但很多都不行或者没有用,今天在此小总结一下搜索框的用法。
@property(nonatomic,retain)UISearchController *searchController;
@property(nonatomic,retain)NSMutableArray *searchResults;//接收数据源结果
@property(nonatomic,retain)NSArray * dibiaoArr;//原始数据
 //搜索框
    self.searchController = [[UISearchController alloc]initWithSearchResultsController:nil];
    _searchController.searchBar.frame = CGRectMake(10, 10, screen_width-20, 40);
    self.searchController.dimsBackgroundDuringPresentation = false;
    _searchController.searchBar.delegate = self;
    //按钮字体颜色
    _searchController.searchBar.tintColor = RGBColor(183, 142, 68, 1.0);
    //改变搜索框外部框的颜色(需要隐藏background才能显示背景色)
    _searchController.searchBar.backgroundImage = [self imageWithColor:[UIColor clearColor] size:_searchController.searchBar.bounds.size];
    //水印
    _searchController.searchBar.placeholder = @"请输入地址";
    [_searchController.searchBar sizeToFit];
    self.searchController.searchResultsUpdater = self;
    //用textfiled代替搜索框
    UITextField *searchField=[_searchController.searchBar valueForKey:@"_searchField"];
    searchField.backgroundColor = RGBColor(40, 39, 44, 1.0);
    //水印颜色
    [searchField setValue:RGBColor(137, 136, 140, 1.0) forKeyPath:@"_placeholderLabel.textColor"];
    //搜索栏表头视图
    self.tableView.tableHeaderView = _searchController.searchBar;
    
    self.dibiaoArr = @[@"下想",@"查快递"];
50FBB2CA-6137-44FA-ABAC-1A096B5EFAB7.png
这里很多人在修改搜索框的外框背景颜色,用了backgroundColor 但是没什么反应,通过debug可以看到这里多了一层view,然后将设置的颜色遮盖掉了。内部框的属性直接修改textfiled就可以了,外部框需要注意.
     searchBar.barTintColor = RGBColor(40, 39, 44, 1.0);
    // 修改UISearchBar右侧的取消按钮文字颜色及背景图片
        for (id searchbuttons in [[_searchController.searchBar subviews][0]subviews]) //只需在此处修改即可
            if ([searchbuttons isKindOfClass:[UIButton class]] ) {
             [cancelButton setTitle:@"取消"forState:UIControlStateNormal];
                [cancelButton setTitle:@"取消"forState:UIControlStateSelected];
                 [cancelButton setTitleColor:RGBColor(183, 142, 68, 1.0) forState:UIControlStateNormal];
                [cancelButton setTitleColor:RGBColor(183, 142, 68, 1.0) forState:UIControlStateHighlighted];
                
            }


86195412-8385-40F0-B2E7-990DFB7A3515.png

关于tableview和searchbar的代理方法我就不多说了,主要就是这几个点注意就好了。

上一篇下一篇

猜你喜欢

热点阅读