您的位置:首页 > 产品设计 > UI/UE

UISearchDisplayController “No Results“ cancel修改

2013-06-21 17:17 351 查看
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];


分享到:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: