как установить цвет фона как чистый цвет панели поиска - PullRequest
1 голос
/ 20 марта 2012

Я хочу сделать фон панели поиска прозрачным или похожим на цвет панели навигации

в настоящее время показывает searchbar

как очистить фон от панели поиска?

Ответы [ 7 ]

4 голосов
/ 20 марта 2012

Beacause UI SearchBar имеет свой собственный фоновый вид, который имеет черный цвет, если мы удалим этот вид, тогда фон UISearchbar станет ясным:

for (UIView *subview in mySearchBar.subviews) {
    if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
        [subview removeFromSuperview];
        break;
    }
} 
2 голосов
/ 19 мая 2014

Установите фоновое изображение для UISearchBar следующим образом.

[searchBar setBackgroundImage:[UIImage new]];

Теперь цвет фона UISearchBar исчезнет.Также будет работать в iOS 7.1

2 голосов
/ 20 марта 2012

// Панель поиска (с использованием фонового изображения)

  UISearchBar* bar = [[UISearchBar alloc] initWithFrame:CGRectMake(568, 30, 200, 44)];
     UIImageView* iview = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"blue.png"]];
    iview.frame = CGRectMake(0, 0, 200, 44);

    [bar insertSubview:iview atIndex:1];
    [iview release];
    [self.view addSubview:bar];
    [bar release];

ИЛИ (с использованием цвета)

// Панель поиска

UISearchBar* bar = [[UISearchBar alloc] initWithFrame:CGRectMake(568, 30, 200, 44)];

[[[bar subviews] objectAtIndex:0] setAlpha:0.0];

bar.tintColor = [UIColor colorWithRed:.376f green:.386f blue:.452f alpha:1.0];
    bar.clipsToBounds = YES;
[self.view addSubview:bar];
[bar release];
0 голосов
/ 01 октября 2014

Я обнаружил в iOS8, что это могло бы работать лучше для сокращения UISearchBar до просто текстового поля.Это позволит вам избавиться от цвета фона.

for (UIView *subView in self.searchBar.subviews) {
    for (UIView *secondLevelSubview in subView.subviews) {
        if (![secondLevelSubview isKindOfClass:NSClassFromString(@"UISearchBarTextField")]) {
            [secondLevelSubview removeFromSuperview];
        }
    }
}
0 голосов
/ 08 сентября 2013

Для очистки фонового представления панели поиска:

[[[self.searchBar subviews] objectAtIndex:0] setHidden:YES];
    for (id subview in self.searchBar.subviews) {
        if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
            [subview removeFromSuperview];
        }

    }
0 голосов
/ 20 марта 2012

Для Очистить цвет фона (если вы хотите установить изображения, используйте код комментария)

for (UIView *subview in searchBar.subviews) 
{
    if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) 
    {   
       // if You want set iamge then use comment code
      /*  UIView *backgroundView = [[UIView alloc] initWithFrame:subview.frame];
        bg.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"searchBar"]];
        [self.searchBar insertSubview:backgroundView aboveSubview:subview];*/

        [subview removeFromSuperview];
    }
}
0 голосов
/ 20 марта 2012

Попробуйте с помощью этой строки:

[[ [searchBar subviews] objectAtIndex:0] removeFromSuperview];
[[ [searchBar subviews] objectAtIndex:0] setBackgroundColor:[UIColor yellowColor]];

Конечно, выручить вас.

...