UISearchBar 的基礎(chǔ)設(shè)置:
- (void)setBarButtonItem
{
//隱藏導(dǎo)航欄上的返回按鈕
[self.navigationItem setHidesBackButton:YES];
//用來(lái)放searchBar的View
UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(5, 7, self.view.frame.size.width, 30)];
//創(chuàng)建searchBar
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(titleView.frame) - 15, 30)];
//默認(rèn)提示文字
searchBar.placeholder = @"搜索內(nèi)容";
//背景圖片
searchBar.backgroundImage = [UIImage imageNamed:@"clearImage"];
//代理
searchBar.delegate = self;
//顯示右側(cè)取消按鈕
searchBar.showsCancelButton = YES;
//光標(biāo)顏色
searchBar.tintColor = UIColorFromRGB(0x595959);
//拿到searchBar的輸入框
UITextField *searchTextField = [searchBar valueForKey:@"_searchField"];
//字體大小
searchTextField.font = [UIFont systemFontOfSize:15];
//輸入框背景顏色
searchTextField.backgroundColor = [UIColor colorWithRed:234/255.0 green:235/255.0 blue:237/255.0 alpha:1];
//拿到取消按鈕
UIButton *cancleBtn = [searchBar valueForKey:@"cancelButton"];
//設(shè)置按鈕上的文字
[cancleBtn setTitle:@"取消" forState:UIControlStateNormal];
//設(shè)置按鈕上文字的顏色
[cancleBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[titleView addSubview:searchBar];
self.searchBar = searchBar;
self.navigationItem.titleView = titleView;
}
代理方法:
pragma mark - UISearchBarDelegate
(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar{
return YES;
}(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
searchBar.showsCancelButton = YES;
}(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
NSLog(@"SearchButton");
}(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
[self.searchBar resignFirstResponder];
[self.navigationController popViewControllerAnimated:YES];
}(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
searchBar.showsCancelButton = YES;
}-
(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
NSString *inputStr = searchText;
[self.results removeAllObjects];
for (ElderModel *model in self.dataArray) {
if ([model.name.lowercaseString rangeOfString:inputStr.lowercaseString].location != NSNotFound) {
[self.results addObject:model];
}
}
[self.tableView reloadData];
}// 找到searchbar的searchField屬性
UITextField *searchField = [self.searchBar valueForKey:@"searchField"];
if (searchField) {
// 背景色
[searchField setBackgroundColor:[UIColor colorWithRed:0.074 green:0.649 blue:0.524 alpha:1.000]];
// 設(shè)置字體顏色 & 占位符 (必須)
searchField.textColor = [UIColor whiteColor];
searchField.placeholder = @"placeholder";
// 根據(jù)@"_placeholderLabel.textColor" 找到placeholder的字體顏色
[searchField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];
// 圓角
searchField.layer.cornerRadius = 10.0f;
searchField.layer.masksToBounds = YES;}
// searchBar 圖標(biāo)設(shè)置
[self.searchBar setImage:[UIImage imageNamed:@"magnifier"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];