remove the border of uitextfield in uisearchbar

cocoa-touch, ios, uisearchbar, uitextfield

Solution

Subclass UISearchBar and override layoutSubViews to remove the search bar background and the text field border subviews:

- (void)layoutSubviews
{    
    [super layoutSubviews];

    for (UIView *subview in self.subviews) {
        // Remove the default background
        if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
            [subview removeFromSuperview];
        }

        // Remove the rounded corners
        if ([subview isKindOfClass:NSClassFromString(@"UITextField")]) {
            UITextField *textField = (UITextField *)subview;
            for (UIView *subsubview in textField.subviews) {
               if ([subsubview isKindOfClass:NSClassFromString(@"UITextFieldBorderView")]) {
                    [subsubview removeFromSuperview];
                }
            }
        }
    }
}

Problem

I wanna custom the UISearchBar control to a style as showed in the picture below: First I should remove the background view, then find out the UITextfiled in UISearchBar, extend the frame of UITextfiled and remove the boarder of it. Here is my code : ``` 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 setBorderStyle:UITextBorderStyleNone]; searchField.frame = self.frame; //modify the frame } [[self.subviews objectAtIndex:0]removeFromSuperview]; //remove the background. ``` The result is the boarder of the UITextField is still there. :( My question is : 1.Why can not I modify the appearance of the UITextField of UISearchBar? 2.How to remove the boarder of UITextfield in UISearchBar. Thanks very much!

Original source

Related problems