SearchBar, как изменить цвет текста?

Вот как выглядит моя панель поиска

Моя панель поиска имеет серый текст по умолчанию, но я хочу, чтобы это был белый текст. Я не могу понять, как использовать swift для изменения цвета текста на панели области видимости, и вы не можете сделать это из раскадровки. Самое близкое, что я нашел, это

searchBarOutlet.setScopeBarButtonTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()], forState:UIControlState.Normal)

но увы и это не сработает. Любые идеи?


person 36 By Design    schedule 09.10.2014    source источник


Ответы (4)


Немного сложно получить доступ к текстовому полю внутри UISearchbar.

Вот как это работает:

for subView in self.searchBarOutlet.subviews
    {
        for secondLevelSubview in subView.subviews
        {
            if (secondLevelSubview.isKindOfClass(UITextField))
            {
                if let searchBarTextField:UITextField = secondLevelSubview as? UITextField
                {
                    //set the color here like this:
                    searchBarTextField.textColor = UIColor.redColor()
                    break;
                }

            }
        }
    }

Короткое решение:

var textFieldInsideSearchBar = yourSearchbar.valueForKey(“searchField”) as? UITextField 
textFieldInsideSearchBar?.textColor = yourcolor
person Dejan Skledar    schedule 09.10.2014
comment
СПАСИБО х100. Никогда бы не догадался. - person 36 By Design; 10.10.2014
comment
Это публичный API? Другими словами, примет ли Apple этот код при отправке? - person Gobe; 01.07.2015
comment
Что вы имеете в виду под публичным API? Apple не заботится о вашем коде. - person Dejan Skledar; 01.07.2015
comment
Это также может позволить вам изменить шрифты :) - person Michael; 25.02.2016

Свифт 3

UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).textColor = UIColor.white
person Shoaib    schedule 01.02.2017

В моем случае для Swift 3.0

(mySearchBar.value(forKey: "searchField") как? UITextField)?.textColor = UIColor.white

person Waqar Ahmed    schedule 17.07.2017

person    schedule
comment
Это приватный интерфейс? - person Carl Smith; 20.06.2015
comment
Нет... Текстовое поле поиска формально не отображается в строке поиска, но доступно через KVO. - person Damo; 20.06.2015