Сделайте пользовательский UISearchBar с подчеркнутым - PullRequest
0 голосов
/ 07 июня 2019

Мне нужно сделать UISearchBar без рамки.Мне нужно вставить картинку в конце (правый угол), убрать границы вокруг и сделать подчеркивание.UISearchBar должно выглядеть как на картинке.Пожалуйста помоги.Я новичок в Swift, и я не знаю, как это сделать.

enter image description here

1 Ответ

0 голосов
/ 08 июня 2019

Создайте пользовательский вид xib и добавьте вид текстового поля следующим образом, как вы предоставили изображение.

Custom Search Bar

Теперь возьмите значение 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) {

    }
}

Выход: Output

Надеюсь, это вам поможет.

...