1、UISearchBar的基本屬性
```
// 初始化
_searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
[self.searchBar setPlaceholder:@"Search"];// 搜索框的占位符
[self.searchBar setPrompt:@"Prompt"];// 頂部提示文本,相當于控件的Title
[self.searchBar setBarStyle:UIBarMetricsDefault];// 搜索框樣式
[self.searchBar setTintColor:[UIColor blackColor]];// 搜索框的顏色,當設置此屬性時,barStyle將失效
[self.searchBar setTranslucent:YES];// 設置是否透明
[self.searchBar setBackgroundImage:[UIImage imageNamed:@"image0"]];// 設置背景圖片
[self.searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"image3"] forState:UIControlStateNormal];// 設置搜索框中文本框的背景
[self.searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"image0"] forState:UIControlStateHighlighted];
[self.searchBar setSearchFieldBackgroundPositionAdjustment:UIOffsetMake(30, 30)];// 設置搜索框中文本框的背景的偏移量
[self.searchBar setSearchResultsButtonSelected:NO];// 設置搜索結果按鈕是否選中
[self.searchBar setShowsSearchResultsButton:YES];// 是否顯示搜索結果按鈕
[self.searchBar setSearchTextPositionAdjustment:UIOffsetMake(30, 0)];// 設置搜索框中文本框的文本偏移量
[self.searchBar setInputAccessoryView:_btnHide];// 提供一個遮蓋視圖
[self.searchBar setKeyboardType:UIKeyboardTypeEmailAddress];// 設置鍵盤樣式
// 設置搜索框下邊的分欄條
[self.searchBar setShowsScopeBar:YES];// 是否顯示分欄條
[self.searchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"Singer",@"Song",@"Album", nil]];// 分欄條,欄目
[self.searchBar setScopeBarBackgroundImage:[UIImage imageNamed:@"image3"]];// 分欄條的背景顏色
[self.searchBar setSelectedScopeButtonIndex:1];// 分欄條默認選中的按鈕的下標
[self.searchBar setShowsBookmarkButton:YES];// 是否顯示右側的“書圖標”
[self.searchBar setShowsCancelButton:YES];// 是否顯示取消按鈕
[self.searchBar setShowsCancelButton:YES animated:YES];
// 是否提供自動修正功能(這個方法一般都不用的)
[self.searchBar setSpellCheckingType:UITextSpellCheckingTypeYes];// 設置自動檢查的類型
[self.searchBar setAutocorrectionType:UITextAutocorrectionTypeDefault];// 是否提供自動修正功能,一般設置為UITextAutocorrectionTypeDefault
self.searchBar.delegate = self;// 設置代理
[self.searchBar sizeToFit];
myTableView.contentInset = UIEdgeInsetsMake(CGRectGetHeight(self.searchBar.bounds), 0, 0, 0);
[self.view addSubview:myTableView];
[myTableView addSubview:self.searchBar];
```
#2.代理方法
```
//搜索框中的內容發生改變時 回調(即要搜索的內容改變)
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
NSLog(@"changed");
if (_searchBar.text.length == 0) {
[self setSearchControllerHidden:YES]; //控制下拉列表的隱現
}else{
[self setSearchControllerHidden:NO];
}
}
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
searchBar.showsCancelButton = YES;
for(id cc in [searchBar subviews])
{
if([cc isKindOfClass:[UIButton class]])
{
UIButton *btn = (UIButton *)cc;
[btn setTitle:@"取消" forState:UIControlStateNormal];
}
}
NSLog(@"shuould begin");
return YES;
}
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
searchBar.text = @"";
NSLog(@"did begin");
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
NSLog(@"did end");
searchBar.showsCancelButton = NO;
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
NSLog(@"search clicked");
}
//點擊搜索框上的 取消按鈕時 調用
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
NSLog(@"cancle clicked");
_searchBar.text = @"";
[_searchBar resignFirstResponder];
[self setSearchControllerHidden:YES];
}
```