Customizing UISearchBar

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]; 




猜你喜欢

转载自zl4393753.iteye.com/blog/1759321