UISearchDisplayController “No Results“ cancel修改
2013-06-21 17:17 三戒1993 阅读(237) 评论(0) 收藏 举报
Recently I needed to fully customize a UISearchBar, so here are some basic “recipes” on how to manage that using a UISearchDisplayController.
1. Changing the title of the “cancel” button
If you want to localize your UISearchBar or just want to apply a unique text matching your application just implement the following UISearchDisplayControllerDelegate method:
-(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller{ [searchBar setShowsCancelButton:YES animated:NO]; for(UIView *subView in searchBar.subviews){ if([subView isKindOfClass:[UIButton class]]){ [(UIButton*)subView setTitle:@"myCustomTitle" forState:UIControlStateNormal]; } } }
2. Changing the title of the “no results” label
Again you need to implement a delegate method
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString{
for(UIView *subview in searchController.searchResultsTableView.subviews) {
if([subview isKindOfClass:[UILabel class]]) {
[(UILabel*)subview setText:@"my custom 'no results' text"];
}
}
return YES;
}
3. Custom background image
Insert this snippet directly after you initialized your UISearchBar
searchBarOverlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"SearchBarBack"]];
searchBarOverlay.frame = CGRectMake(-8, -2, 320, 48);
[searchBar addSubview:searchBarOverlay];
[searchBar sendSubviewToBack:searchBarOverlay];
for (UIView *v in [searchBar subviews]) {
if ([NSStringFromClass([v class]) isEqualToString:@"UISearchBarBackground"])
{
[searchBar sendSubviewToBack:v];
}
if ([NSStringFromClass([v class]) isEqualToString:@"UIImageView"] && v != searchBarOverlay)
{
[searchBar sendSubviewToBack:v];
}
}
5.Custom background color
Finally a one-liner
searchBar.tintColor = [UIColor redColor];
浙公网安备 33010602011771号