【发布时间】:2019-05-30 17:20:17
【问题描述】:
我已经尝试了各种方法来更改搜索图标和占位符文本搜索栏的颜色,但没有任何效果。谁能帮帮我!
这是我正在关注的搜索栏实现。
func configureSearchBar() {
let searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.delegate = self
searchController.searchBar.tintColor = .white
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.searchBarStyle = .default
navigationItem.searchController = searchController
let textFieldInsideSearchBar = searchController.searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.attributedPlaceholder = NSAttributedString(string: "Suche", attributes: [NSAttributedString.Key.foregroundColor: UIColor.white])
searchController.searchBar.setText(color: .white)
searchController.searchBar.setTextField(color: UIColor.white.withAlphaComponent(0.2))
searchController.searchBar.setPlaceholderText(color: .white)
searchController.searchBar.setSearchImage(color: .white)
searchController.searchBar.setClearButton(color: .white)
}
extension UISearchBar {
func getTextField() -> UITextField? { return value(forKey: "searchField") as? UITextField }
func setText(color: UIColor) { if let textField = getTextField() { textField.textColor = color } }
func setPlaceholderText(color: UIColor) { getTextField()?.setPlaceholderText(color: color) }
func setClearButton(color: UIColor) { getTextField()?.setClearButton(color: color) }
func setTextField(color: UIColor) {
guard let textField = getTextField() else { return }
switch searchBarStyle {
case .minimal:
textField.backgroundColor = color
textField.layer.backgroundColor = color.cgColor
textField.layer.cornerRadius = 6
case .prominent, .default: textField.backgroundColor = color
@unknown default: break
}
}
func setSearchImage(color: UIColor) {
guard let imageView = getTextField()?.leftView as? UIImageView else { return }
imageView.tintColor = color
imageView.image = imageView.image?.withRenderingMode(.alwaysTemplate)
}
}
【问题讨论】:
-
这些解决方案都不起作用。我已经检查了很多解决方案。我觉得实现中存在限制颜色变化的问题。
-
我认为该代码适用于除 12.1 之外的所有版本,您可以检查一下吗?
-
我应该检查哪一个?
-
有问题的所有方法都应该在 12 和 11 版本中运行,只要尝试它是否运行良好,然后苹果会出现这个问题,当它解决它时,它会自动在您的应用中运行。
标签: ios swift uisearchbar uisearchcontroller