iSearchBar未更改iOS 12.1的搜索图标和占位符颜色
我尝试了各种方法来更改搜索图标和占位符文本搜索栏的颜色,但没有任何效果。谁能帮帮我吗 这是我为搜索栏所遵循的实现iSearchBar未更改iOS 12.1的搜索图标和占位符颜色,ios,swift,uisearchbar,uisearchcontroller,Ios,Swift,Uisearchbar,Uisearchcontroller,我尝试了各种方法来更改搜索图标和占位符文本搜索栏的颜色,但没有任何效果。谁能帮帮我吗 这是我为搜索栏所遵循的实现 func configureSearchBar() { let searchController = UISearchController(searchResultsController: nil) searchController.searchBar.delegate = self searchController.searchBar.tintColor
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)
}
}试着用这种方法更改seachbar占位符的颜色
var searchTextField: UITextField? = searchBar.value(forKey: "searchField") as? UITextField
if searchTextField!.responds(to: #selector(getter: UITextField.attributedPlaceholder)) {
let attributeDict = [NSForegroundColorAttributeName: UIColor.white]
searchTextField!.attributedPlaceholder = NSAttributedString(string: "Search", attributes: attributeDict)
}
或
这和我在上面的问题中分享的一样。请检查:这些解决方案都不起作用。我已经检查了很多解决方案。我觉得在实现中存在一个限制颜色变化的问题。我认为代码适用于除12.1之外的所有版本。你能检查这个吗?我应该检查哪一个?有问题的是,所有方法都应该适用于12和11版本,只要试一下,如果它工作正常,那么这个问题由苹果公司发生,当它自动解决时在应用程序中工作。
extension UISearchBar
{
func setMagnifyingGlassColorTo(color: UIColor)
{
// Search Icon
let textFieldInsideSearchBar = self.value(forKey: "searchField") as? UITextField
let glassIconView = textFieldInsideSearchBar?.leftView as? UIImageView
glassIconView?.image = glassIconView?.image?.withRenderingMode(.alwaysTemplate)
glassIconView?.tintColor = color
}
func setClearButtonColorTo(color: UIColor)
{
// Clear Button
let textFieldInsideSearchBar = self.value(forKey: "searchField") as? UITextField
let crossIconView = textFieldInsideSearchBar?.value(forKey: "clearButton") as? UIButton
crossIconView?.setImage(crossIconView?.currentImage?.withRenderingMode(.alwaysTemplate), for: .normal)
crossIconView?.tintColor = color
}
func setPlaceholderTextColorTo(color: UIColor)
{
let textFieldInsideSearchBar = self.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.textColor = color
let textFieldInsideSearchBarLabel = textFieldInsideSearchBar!.value(forKey: "placeholderLabel") as? UILabel
textFieldInsideSearchBarLabel?.textColor = color
}
}