Customizing search bar in iPhone application Development

旧城冷巷雨未停 提交于 2019-12-03 03:59:32

you can subclass the UISearchBar and override the layoutSubviews method :

- (void)layoutSubviews {
   UITextField *searchField;
   NSUInteger numViews = [self.subviews count];
   for(int i = 0; i < numViews; i++) {
      if([[self.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) { //conform?
        searchField = [self.subviews objectAtIndex:i];
      }
   }
   if(!(searchField == nil)) {
       searchField.textColor = [UIColor whiteColor];
       [searchField setBackground: [UIImage imageNamed:@"yourImage.png"] ];
       [searchField setBorderStyle:UITextBorderStyleNone];
   }

   [super layoutSubviews];
}

Also you can :

//to clear searchbar backgraound
- (void) clearSearchBarBg
{
    for (UIView *subview in theSearchBar.subviews) 
    {
        if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) 
        {
            [subview removeFromSuperview];
            break;
        }
    }
}

//display showSearchButtonInitially in a keyboard 
- (void)showSearchButtonInitially
{
    UIView * subview;
    NSArray * subviews = [theSearchBar subviews];

    for(subview in subviews)
    {
        if( [subview isKindOfClass:[UITextField class]] )
        {
            NSLog(@"setEnablesReturnKeyAutomatically");
            [((UITextField*)subview) setEnablesReturnKeyAutomatically:NO];
            ((UITextField*)subview).delegate=self;
            [((UITextField*)subview) setEnabled:TRUE];
            ((UITextField*)subview).borderStyle = UITextBorderStyleNone;
            break;
        }
    }
}

Look for Apple DOC for UISearchBar

You have bunch of methods there to get whatever you want

You can get UITextView Inside the search bar by

UITextField *textField = [searchBar.subviews objectAtIndex:2];

if ([textField isKindOfClass:[UITextField class]]) {
    //Do your customization
}

Again look for AppleDoc for UITextField. You have bunch of methods for that also.

Yeah definitely. You can make your custom search bar (which is a sub-class of UIView) and add it as subview to the tableHeaderView.

Md.shohrab hossain Chowdhury
[[searchBarDesign.subviews objectAtIndex:0] removeFromSuperview];

here searchBarDesign is my searchBar name.

I think it's better just set all properties of UISearchBar when it is loaded.

@interface MySearchBar : UISearchBar

@end


@implementation MySearchBar

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self myInitialize];
    }
    return self;
}

-(void)awakeFromNib

{
    [super awakeFromNib];
    [self myInitialize];
}

-(void)myInitialize
{
    self.backgroundImage = [UIImage imageNamed:@"image.png"];

    for (UIView* subview in self.subviews) {
        if ([subview isKindOfClass:[UITextField class]]) {
            //customize text field
            UITextField* textfield = (UITextField*) subview;
        }
    }
}

@end
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!