Цвет панели поиска - серый ios7

В настоящее время я работаю над приложением, которое отлично работает, пока не появится ios7. Панель поиска была прозрачной и смешана с синим фоном навигационной панели. Теперь, когда я работаю в ios7, навигационная панель синяя, однако панель поиска имеет серый фон. Как сделать его синим или прозрачным?

Вот изображение:

enter image description here

Ответ 1

Попробуйте следующее:

if(IOS_7)
{
    self.searchBar.searchBarStyle = UISearchBarStyleMinimal;
}

Ответ 2

Вы можете установить для параметра "Оттенок" значение "Очистить цвет" в Interface Builder (.xib):

enter image description here

Это также можно сделать в коде:

self.searchBar.barTintColor = [UIColor clearColor];

Ответ 3

Чтобы сделать его плоским, вам просто нужно удалить представление UISearchBarBackground.

Я создал рекурсивный метод для правильной очистки панели поиска.

- (void) removeUISearchBarBackgroundInViewHierarchy:(UIView *)view
{
    for (UIView *subview in [view subviews]) {
        if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
            [subview removeFromSuperview];
            break; //To avoid an extra loop as there is only one UISearchBarBackground
        } else {
            [self removeUISearchBarBackgroundInViewHierarchy:subview];
        }
    }
}

Вы можете просто отправить свою панель поиска методу и впоследствии изменить цвет.

[self removeUISearchBarBackgroundInViewHierarchy:self.searchDisplayController.searchBar];
self.searchDisplayController.searchBar.backgroundColor = yourUIColor;

Ответ 4

** Изменить - это работало для меня в iOS 7

// Set the color to whatever blue color that is in your screenshot
self.searchBar.backgroundImage = [UIImage imageWithColor:[UIColor redColor] cornerRadius:5.0f];

Если вы хотите, чтобы все ваши строки поиска были определенным цветом, выполните следующие действия:

// Put this in your app delegate didFinishLaunchingWithOptions method
// Whatever color you want for searchBarColor
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { // For iOS 7
    UIColor *searchBarColor = [UIColor blueColor];
    [[UISearchBar appearance] setBackgroundColor:searchBarColor];
}

Если вы хотите, чтобы конкретный фон в строке поиска был цветом:

// Set it in your viewDidLoad method of your controller
// Replace the yourSearchBar property with whatever you're doing to instantiate the search bar
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { // For iOS 7
{
    UIColor *searchBarColor = [UIColor blueColor];
    self.yourSearchBar.backgroundColor = searchBarColor;
}