Как изменить цвет кнопки "Отмена" на UISearchBar в Swift
Я добавил UISearchBar
в начало моего PFQueryTableViewController
. Я изменил цвет searchBar как цвет моего приложения, но при этом он, похоже, также изменил цвет кнопки "Отмена" справа от нее до того же цвета. В идеале я хочу, чтобы цвет был белым.
Это изображение показывает, как он выглядит в данный момент:
![]()
Похоже, что кнопки "Отмена" нет, но есть такой же цвет, что и searchBar (вы все равно можете нажать его и т.д.)
Есть ли способ изменить цвет этой кнопки "Отменить" до белого? Все, что я пробовал, не имеет никакого значения.
Код, который я использовал, чтобы сделать UISearchBar
этот цвет:
UISearchBar.appearance().barTintColor = UIColor(hue: 359/360, saturation: 67/100, brightness: 71/100, alpha: 1)
UISearchBar.appearance().tintColor = UIColor(hue: 359/360, saturation: 67/100, brightness: 71/100, alpha: 1)
И в раскадровке я установил:
![введите описание изображения здесь]()
И, наконец, чтобы сделать placeholder и текст белым внутри SearchBar, я использовал:
for subView in self.filmSearchBar.subviews {
for subsubView in subView.subviews {
if let searchBarTextField = subsubView as? UITextField {
searchBarTextField.attributedPlaceholder = NSAttributedString(string: NSLocalizedString("Search Cinevu film reviews", comment: ""), attributes: [NSForegroundColorAttributeName: UIColor.whiteColor()])
searchBarTextField.textColor = UIColor.whiteColor()
}
}
}
Спасибо за любую помощь!:)
Ответы
Ответ 1
Посмотрев вокруг, я понял, что это лучший способ добиться того, что мне нужно:
let cancelButtonAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
UIBarButtonItem.appearance().setTitleTextAttributes(cancelButtonAttributes , for: .normal)
Ответ 2
Используйте эту одну строку в коде для изменения цвета кнопки отмены:
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue): UIColor.white], for: .normal)
Проверено в Xcode 9.2 с Swift 4.0
Ответ 3
Основа на коде Nick89, я изменил это для Swift 3.1
let cancelButtonAttributes: [String: AnyObject] = [NSForegroundColorAttributeName: UIColor.white]
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(cancelButtonAttributes, for: .normal)
Я хочу изменить только на UISearchBar
, а не на все UIBarButton, поэтому я использую как UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self])
Ответ 4
Вы пытались UISearchBar.appearance(). TintColor = UIColor.whiteColor()
Ответ 5
Swift 4.2
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.black], for: .normal)
Ответ 6
Версия Swift 4.2, основанная на других ответах:
let cancelButtonAttributes: [NSAttributedString.Key: Any] = [NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): UIColor.orange]
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(cancelButtonAttributes, for: .normal)
Ответ 7
С инструментарием Swift 4.0 RELEASE 2017-09-19 это сработало:
let cancelButtonAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(cancelButtonAttributes, for: .normal)
Ответ 8
Я знаю, что на этот вопрос достаточно ответов, но здесь есть простой способ добиться этого, используя цвет фона SearchBar и цвет фона кнопки "Отмена", мы можем изменить его непосредственно в инспекторе атрибутов раскадровки.
для цвета фона панели поиска
![enter image description here]()
для кнопки отмены SearchBar цвет
![enter image description here]()
Ответ 9
Все приведенные выше ответы не спомогли мне. (Получил 'Type' NSAttributedString.Key '(он же' NSString ') не имеет члена' foregroundColor '' ошибка)
Может быть, потому что я на Свифте 3...
Вот немного измененный код, который работал для меня: -
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSForegroundColorAttributeName : .black], for: .normal)
Примечание: -
Если вы используете UISearchController, вставьте этот код в willPresentSearchController: или didPresentSearchController:
Ответ 10
Вы можете просто установить оттенок цвета панели поиска, чтобы изменить цвет кнопки Отмена. Это доступно начиная со Swift 4, так что надо делать свое дело.
let searchBar = UISearchBar(frame: )
searchBar.tintColor = .orange
Кнопка отмены строки поиска и изменение цвета курсора
Ответ 11
Swift
4.2, 4.1
Пользовательский класс, добавленный здесь, можно использовать для настройки наиболее распространенных элементов в панели поиска. Пользовательский класс SearchBar
может привести к следующей строке поиска.
![enter image description here]()