iPad / iPhone uiSearchbar прозрачный фон - PullRequest
1 голос
/ 09 февраля 2011

Я знаю, что эти вопросы задавались (и решались) раньше, но у меня это не сработает. по сути, я уже решил ее, но этот вопрос возник из ниоткуда и ударил меня по голове.

Я не могу установить прозрачность фона моего UISearchBar. Я всегда использовал:

searchBar.backgroundColor = [UIColor clearColor];   
[[searchBar.subviews objectAtIndex:0] removeFromSuperview];

и это работало хорошо ... но внезапно это прекратилось. может быть, так как я обновил свою версию xcode, но я не уверен. Я провел пару часов, уже расследуя это .. Есть ли кто-нибудь, чтобы сделать это? пожалуйста, укажите мне в правильном направлении. спасибо куча !!!

С наилучшими пожеланиями T

Ответы [ 3 ]

10 голосов
/ 09 февраля 2011

Попробуйте перебрать свои подпредставления и найти подходящий класс:

for (UIView *subview in searchBar.subviews) {
    if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
        [subview removeFromSuperview];
        break;
    }
}

Я не уверен, но не думаю, что вы можете предположить, что индекс 0 является фоновым представлением.Пример выше работает для меня.

0 голосов
/ 01 июля 2015

Вам просто нужно изменить свойство searchBarStyle на UISearchBarStyleMinimal. По умолчанию это UISearchBarStyleProminent. Вы можете изменить его в раскадровке или в своем коде, как показано ниже.

self.yourSearBar.searchBarStyle = UISearchBarStyleMinimal;
0 голосов
/ 09 февраля 2011

Это все еще работает для меня, так что, возможно, что-то еще в вашем коде испортило это.Вы уверены, что searchBar настроен правильно (подключенная розетка в IB, вызов вызывается после инициализации представления и т. Д.)?Лучший способ - просто распечатать содержимое объекта [searchBar.subviews objectAtIndex: 0], это должен быть объект UISearchBarBackground.И, между прочим, поскольку Apple может изменить иерархию представления UISearchBar в любое время, лучше выполнить проверку: searchBar.subviews.count и

if ([[searchBar.subviews objectAtIndex:0] class] == NSClassFromString(@"UISearchBarBackground")) ...

перед вызовом этого.

...