Создайте пользовательский вид xib и добавьте вид текстового поля следующим образом, как вы предоставили изображение.
Теперь возьмите значение UITextField
и добавьте следующий код в файлы классов вашего пользовательского представления. Смотреть код
class CustomSearchBar: UIView {
//------------------------------------------------------------------------------
// MARK:- Outlets
//------------------------------------------------------------------------------
@IBOutlet weak var txtSearch : UITextField!
//------------------------------------------------------------------------------
// MARK:- Abstract Method
//------------------------------------------------------------------------------
class func instantiateView() -> CustomSearchBar {
let customSearchBar = UINib(nibName: "CustomSearchBar", bundle: .main).instantiate(withOwner: self, options: nil)[0] as! CustomSearchBar
let uiView = UIView.init(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
let imageView = UIImageView(frame: CGRect(x: 0, y: 8, width: 24, height: 24))
imageView.image = #imageLiteral(resourceName: "icon_down_arrow").withRenderingMode(.alwaysTemplate)
imageView.tintColor = .blue
uiView.addSubview(imageView)
// Add right button
customSearchBar.txtSearch.rightViewMode = .always
customSearchBar.txtSearch.rightView = uiView
return customSearchBar
}
}
Теперь, в вашем методе UIViewController
viewDidLoad
добавьте следующий код, чтобы программно добавить пользовательскую панель поиска.
class ViewController: UIViewController {
override func viewDidLoad() {
let customSearchBar = CustomSearchBar.instantiateView()
customSearchBar.translatesAutoresizingMaskIntoConstraints = false
customSearchBar.txtSearch.delegate = self
self.view.addSubview(customSearchBar)
customSearchBar.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 0).isActive = true
customSearchBar.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: 0).isActive = true
customSearchBar.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor, constant: 0).isActive = true
customSearchBar.heightAnchor.constraint(equalToConstant: 60).isActive = true
}
}
extension ViewController: UITextFieldDelegate {
func textFieldDidEndEditing(_ textField: UITextField) {
}
//------------------------------------------------------------------------------
func textFieldDidEndEditing(_ textField: UITextField, reason: UITextField.DidEndEditingReason) {
}
}
Выход:
Надеюсь, это вам поможет.