Панель поиска в UINavigationItem - PullRequest
0 голосов
/ 09 августа 2011

Я добавил панель поиска в UINavigationItem, используя следующий код:

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
[searchBar sizeToFit];
searchBar.delegate = self;
self.navigationItem.titleView = searchBar;
self.navigationItem.title = self.category.title;
[searchBar release];

но интерфейс результата выглядит так:

enter image description here

Как изменить цвет панели поиска и сделать ее такой же, как на фоне панели навигации?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 09 августа 2011

Для UINavigationBar есть несколько способов манипулировать цветом фона:

  1. Установите для свойства tintColor нужный вам цвет.
  2. Следуйте предлагаемому способу модификации, чтобы применить пользовательский градиент или другое изображение шаблона - http://leonov.co/2011/04/uinavigationbar-and-uitoolbar-customization-ultimate-solution/

Для панели поиска также доступна функция tintColor. Но в вашем случае я предлагаю наследовать форму UISearchBar и предоставить реализацию, как показано ниже, чтобы полностью избавиться от рутины фонового рисования. В этом случае вы получите панель поиска на прозрачной панели инструментов, и вам нужно будет управлять только цветом UINavigationBar.

//TransparentSearchBar.m

@interface TransparentSearchBar()
- (void)removeBackgroundView;
@end

@implementation TransparentSearchBar

- (id)init
{
    self = [super init];

    if(self) {
        [self removeBackgroundView];
    }

    return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder 
{
    self = [super initWithCoder:aDecoder];

    if(self) {
        [self removeBackgroundView];
    }

    return self;
}

- (id)initWithFrame:(CGRect)frame 
{
    self = [super initWithFrame:frame];

    if(self) {
        [self removeBackgroundView];
    }

    return self;
}

- (void)removeBackgroundView 
{
    for (UIView *view in self.subviews)
    {
        if ([view isKindOfClass:NSClassFromString
             (@"UISearchBarBackground")])
        {
            [view removeFromSuperview];
            break;
        }
    }
}

@end
0 голосов
/ 09 августа 2011

Если вы видите документацию по UISearchBar, он имеет свойство "tintColor".Установите цвет панели навигации.

Если вы не знаете цвет панели навигации, получите tintColor of navigationBar.

Возможно, вы также захотите заложить со свойством «полупрозрачный»панель поиска.Может работать лучше.

...