Я пытался создать панель поиска, но не проверял ее. Вы можете найти ответы на свои вопросы из фрагмента кода. Вам также необходимо добавить расширение UISearchBar в свой проект, чтобы использовать некоторые методы во фрагменте.
searchBar.tintColor = UIColor.white
searchBar.searchBarStyle = .default
searchBar.placeholder = "Search"
searchBar.setTextFieldPlaceholderColor(color: UIColor.white)
searchBar.backgroundColor = UIColor.red
searchBar.setImage(UIImage(named:"searchIcon"), for: .search, state: .normal)
if #available(iOS 13.0, *) {
searchBar.searchTextField.backgroundColor = UIColor.black.withAlphaComponent(0.3)
searchBar.setBackgroundImage(UIImage(), for: .any, barMetrics: .default)
searchBar.searchTextField.textColor = UIColor.white
searchBar.searchTextField.font = UIFont.systemFont(ofSize: 12)
} else {
searchBar.removeBackgroundImageView()
searchBar.setTextFieldBackground(color: UIColor.black.withAlphaComponent(0.3))
}
UISearchBar extension
extension UISearchBar {
//use for iOS 12 and below
func removeBackgroundImageView(){
if let view:UIView = self.subviews.first {
for curr in view.subviews {
guard let searchBarBackgroundClass = NSClassFromString("UISearchBarBackground") else {
return
}
if curr.isKind(of:searchBarBackgroundClass){
if let imageView = curr as? UIImageView{
imageView.removeFromSuperview()
break
}
}
}
}
}
func setTextFieldBackground(color : UIColor) {
for subView in self.subviews {
for subView1 in subView.subviews {
if subView1.isKind(of: UITextField.self) {
subView1.backgroundColor = color
(subView1 as? UITextField)?.font = UIFont.systemFont(ofSize: 12)
}
}
}
}
func setTextFieldPlaceholderColor(color : UIColor) {
for subView in self.subviews {
for subView1 in subView.subviews {
if subView1.isKind(of: UITextField.self) {
if let placeholder = (subView1 as! UITextField).placeholder {
(subView1 as! UITextField).attributedPlaceholder = NSAttributedString(string:placeholder,attributes: [NSAttributedString.Key.foregroundColor: color])
}
}
}
}
}
}