Изменение цвета оттенка не меняет шрифт кнопки отмены внутри панели поиска.

У меня есть UIView с именем SearchView, и я добавляю searchController.searchBar в качестве подвида UIView.

Внутри viewDidLoad() я меняю панель поиска в своем UISearchController следующим образом:

    //makes background transparent
    searchController.searchBar.backgroundImage = UIImage()

    //makes magnifying glass white
    let iconView:UIImageView = tf!.leftView as! UIImageView
    iconView.image = iconView.image?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)
    iconView.tintColor = UIColor.whiteColor()

    //changes text color to white
    let tf = searchController.searchBar.valueForKey("searchField") as? UITextField
    let attributedString = NSAttributedString(string: "", attributes:[NSForegroundColorAttributeName : UIColor.whiteColor()]) 
    tf!.attributedPlaceholder = attributedString
    tf!.textColor = UIColor.whiteColor()
    //changes search field background color
    tf!.backgroundColor = UIColor(red: 82/255, green: 91/255, blue: 93/255, alpha: 1) 

    //HERE: should make the cancel button font white...
    searchController.searchBar.tintColor = UIColor.whiteColor()

    searchView.addSubview(searchController.searchBar)

И в AppDelegate у меня есть

UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).tintColor = UIColor.whiteColor()

person Michael McKenna    schedule 15.03.2016    source источник
comment
см. этот stackoverflow.com/questions/2787481/   -  person NSLog    schedule 15.03.2016
comment
проверьте пример Apple developer.apple.com/library/ios/samplecode / и просто добавьте searchController.searchBar.tintColor = UIColor.whiteColor() в метод viewDidLoad   -  person Muhammad Adnan    schedule 15.03.2016
comment
@Pran Я использовал (UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self])).tintColor = UIColor.whiteColor(), и это не сработало. Мухаммед, я пытался сделать это сам по себе, а затем я попытался сделать это в сочетании с ответом Прана, и шрифт кнопки отмены все еще не изменится. Это отстой.   -  person Michael McKenna    schedule 15.03.2016
comment
@MuhammadAdnan Как видите, я уже сделал searchController.searchBar.tintColor = UIColor.whiteColor(), который не работает.   -  person Michael McKenna    schedule 15.03.2016
comment
@MuhammadAdnan Это приводит к тому, что фон становится белым, когда я хочу, чтобы он был прозрачным. Кроме того, текст кнопки отмены по-прежнему светло-серого цвета.   -  person Michael McKenna    schedule 15.03.2016


Ответы (1)


В своем делегате приложения во время запуска скажите следующее:

UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).tintColor = UIColor.whiteColor()

Обратите внимание, что это будет иметь эффект только тогда, когда в строке поиска происходит редактирование. Если в строке поиска нет редактирования, то и отменять нечего, поэтому кнопка «Отмена» затемнена и не имеет цвета (оно вроде серого по цвету оттенка).

введите здесь описание изображения

person matt    schedule 15.03.2016
comment
Спасибо за ваш ответ, и я уверен, что это все еще поможет кому-то ... но это все еще не меняет шрифт кнопки отмены на моем. Я не уверен, почему меня минусуют. Я обновлю свой вопрос тем, что я пробовал, так как люди начали отвечать. - person Michael McKenna; 15.03.2016
comment
Ну, очевидно, я не знаю, что еще ты делаешь. Мой ответ включает снимок экрана, который показывает, что он действительно работает. Как я объяснил в своем ответе, светло-серый цвет отображается только тогда, когда вы не редактируете строку поиска, и вы ничего не можете с этим поделать. - person matt; 15.03.2016
comment
При редактировании шрифт у меня все равно не белый. Я разместил весь соответствующий код, поэтому ничего не скрываю. Не уверен, что происходит. - person Michael McKenna; 15.03.2016
comment
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor(красный: 72/255, зеленый: 79/255, синий: 79/255, альфа: 1), NSFontAttributeName: UIFont(имя: Open Sans, размер: 14)! ], forState: UIControlState.Normal) Я думал, что ваш код переопределит этот код, который был размещен ранее. Я прокомментировал этот код, и ваш работал как шарм. Извините все... не подумал проверить AppDelegate. - person Michael McKenna; 15.03.2016