UIsearchBarのカスタマイズ


UIsearchBarは2つのsubViewからなり、1つはUIsearchBarBackGroundであり、もう1つはUItextFieldである.コードには2つのsubViewのプロパティが直接操作されていません.変更するには、サブコントロールで1つを変更する必要があります.UIsearchBarのバックグラウンドボックスを変更して削除する方法は2つあります.1つは、UIsearchBarBackGroundを直接削除することです.もう1つは、UISEarchBarBaceGround上でUISEarchBarの背景色としてロードされる色を設定するUITIewを作成することです.
//      
 UIView *subView = _searchBar.subviews[0];
     //1for (UIView *view in subView.subviews)
    {
        //     
        if ([view isKindOfClass:NSClassFromString(@"UISearchBarBackground")])
        {
            [view removeFromSuperview];
        }
    }
     //2,  
     UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"40-di.png"]];
[subView insertSubview:imageView atIndex:1];

二、そのTextFieldを修正する
//      
 UIView *subView = _searchBar.subviews[0];
    for (UIView *view in subView.subviews)
    {
        //   textField
        if ([view isKindOfClass:[UITextField class]])
        {
            _textField = (UITextField *)view;
            _textField.layer.borderWidth = 0.5;
            _textField.layer.borderColor = H_LINECOLOR.CGColor;
            _textField.layer.cornerRadius = 2;
            _textField.clipsToBounds = YES;
        }
    }

三、代理方法//検索文字入力時に検索ボタンを隠し、クリア時に表示する
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
searchBar.showsScopeBar = YES;
[searchBar sizeToFit];
[searchBar setShowsCancelButton:YES animated:YES];
return YES;
}
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {
searchBar.showsScopeBar = NO;
[searchBar sizeToFit];
[searchBar setShowsCancelButton:NO animated:YES];
return YES;
}

//検索ボタン文字の変更//UISEarchBarキャンセルボタンフォントの変更
for(id cc in [searchBar subviews])
{
if([cc isKindOfClass:[UIButton class]])
{
UIButton *btn = (UIButton *)cc;
[btn setTitle:@"  " forState:UIControlStateNormal];
}