Как настроить стиль UISearchBar - PullRequest
3 голосов
/ 21 февраля 2011

Кто-нибудь знает, как настроить стиль UISearchBar? Есть 3 стиля по умолчанию для UISearchBar, но я хочу настроить другие аспекты панели поиска, такие как ее изображение, фон. Если нет способа сделать это, могу ли я использовать UITextField для замены функции панели поиска?

Спасибо всем

Ответы [ 3 ]

6 голосов
/ 21 февраля 2011

Как вы обнаружили, вы можете настроить панель, такую ​​как панель поиска, со свойством barStyle и этими двумя значениями:

UIBarStyleDefault
UIBarStyleBlack

В качестве альтернативы, вы можете выбрать пользовательскийцвет для полосы с помощью свойства tintColor:

// use RGB values between 0.0 and 1.0
UIColor *barColor = [UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0]; 
searchBar.tintColor = barColor;

В любом случае вы можете сделать полосу полупрозрачной, установив для свойства полупрозрачности значение YES.

1 голос
/ 26 февраля 2011

UISearchBar является подклассом UIView, поэтому вы можете просто добавить UIView сверху.(Вам просто нужно сохранить область фактической панели поиска прозрачной.)

// Редактировать

Проще добавить изображение на задний план (между фоном и полем поиска, чтоявляется).Для этого просто добавьте его и выполните итерацию по подпредставлению, чтобы отправить исходный фон сзади (за вашим изображением).

searchBarOverlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"SearchBarBack"]];
searchBarOverlay.frame = CGRectMake(-8, -2, 320, 48);
[searchBar addSubview:searchBarOverlay];
[searchBar sendSubviewToBack:searchBarOverlay];

for (UIView *v in [searchBar subviews]) {

    if ([NSStringFromClass([v class]) isEqualToString:@"UISearchBarBackground"]) 
    {
        [searchBar sendSubviewToBack:v];
    }

    if ([NSStringFromClass([v class]) isEqualToString:@"UIImageView"] && v != searchBarOverlay) 
    {
        [searchBar sendSubviewToBack:v];
    }
}
0 голосов
/ 04 марта 2015

Для UISearchBarStyleProminent:

1) Обязательно установите флажок «Полупрозрачный» для строки поиска в Инспекторе атрибутов.

2) Добавьте следующее для viewDidLoad:

self.navigationController.navigationBar.translucent = NO; // If navBar
self.searchDisplayController.searchBar.translucent = NO;

Чтобы минимальная панель поиска не была полупрозрачной, я собрал обходной путь.

1) Обязательно установите флажок «Полупрозрачный» для панели поиска в Инспекторе атрибутов.

2) Добавьте следующий код для viewDidLoad:

self.navigationController.navigationBar.translucent = NO;
self.searchDisplayController.searchBar.translucent = NO;
self.searchDisplayController.searchBar.backgroundColor = [UIColor desiredColor];

3) Необходимо добавить UIView в viewController.Этот вид должен иметь высоту 20px и иметь тот же цвет, что и

searchBar.barTintColor.
...