2015-01-06 3 views
0

Я ищу, чтобы сделать простой один цвет строку поиска, как это:фон UISearchBar изображение рабочего причудливо

enter image description here

Я преуспел в этом, на мой взгляд контроллера, установив это изображение в качестве фона изображение:

enter image description here

и с этим кодом:

[self.searchBar setTranslucent:NO]; 
[self.searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"searchbg.png"] forState:UIControlStateNormal]; 

Однако, когда я нажимаю на панели поиска, и он идет в searchdisplaycontroller, это выглядит следующим образом:

enter image description here

Там в белый раздел там, что я не могу избавиться от. Я пробовал это делать:

[self.searchDisplayController.searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"searchbg.png"] forState:UIControlStateNormal]; 

Но это не работает. Я немного озадачен, почему они действуют по-другому, так как они оба являются uisearchbars?

Спасибо.

ответ

0

Попробуйте установить borderColor и borderWidth для слоя UISearchBar, это исправит вашу смену цвета. помните, что вы должны иметь в виду, что для позиции ios7 и более поздней версии разные, поэтому используйте, как я упомянул ниже. также у меня есть подкласс для UISearchBar, если вы хотите, чтобы u тоже создал один или заменил себя вашим serachBar

- (void)setup 
{ 
    self.placeholder  = @"Search Products"; 

    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) { 
     self.backgroundColor = [UIColor lightGrayColor]; 
     UIView *topView = self.subviews[0]; 
     [self searchBarCustomization:topView.subviews]; 
    } else { 
     self.backgroundImage = [UIImage imageWithColor:[UIColor lightGrayColor]]; 
     self.layer.borderColor = [UIColor lightGrayColor].CGColor; 
     self.layer.borderWidth = 0.0; 
     [self searchBarCustomization:self.subviews]; 
    } 
} 

- (void)searchBarCustomization:(NSArray *)subViews 
{ 
    for (UIView *subView in subViews) { 
     if ([subView isKindOfClass:[UITextField class]]) { 
      [self customSearchBarField:subView]; 
     } 
     if ([subView isKindOfClass:[UIButton class]]) { 
      [self customSearchCancelButton:subView]; 
     } 
    } 
} 

- (void)customSearchBarField:(id)searchBarField 
{ 
    UITextField *searchField = (UITextField *) searchBarField; 
    if (!SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) { 
     searchField.background = [UIImage imageWithColor:[UIColor whiteColor]]; 
     searchField.borderStyle = UITextBorderStyleNone; 
     searchField.layer.cornerRadius = 5.0; 
    } 
} 
Смежные вопросы