быстрое изменение высоты текстового поля iOS13 searchBar - PullRequest
2 голосов
/ 16 октября 2019

есть ли шансы изменить UISearchBar UITextField рост? Я перепробовал почти все решения, которые смог найти, но все они оказались безуспешными.

Обновлено: Я понял, что ios13 searchBar не содержит UITextField, но содержит UISearchBarTextField класс

enter image description here

и здесь иерархия

enter image description here

, как я понял, мы должныищу новый класс для iOS13 вместо UITextField

Я пробовал зацикливание и поиск TextField

    override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    for subView in searchBar.subviews {
        for subsubView in subView.subviews{
            for subsubsubView in subsubView.subviews{
                if #available(iOS 13.0, *) {
                    if let textField = subsubsubView as? UISearchTextField{
                        var bounds: CGRect
                        bounds = textField.frame
                        bounds.size.height = 40 //(set height whatever you want)
                        textField.bounds = bounds
                        textField.layoutIfNeeded()
                    }
                } else {
                    if let textField = subsubView as? UITextField {
                        var bounds: CGRect
                        bounds = textField.frame
                        bounds.size.height = 40 //(set height whatever you want)
                        textField.bounds = bounds

                    }
                }
            }
        }
    }
}

, и отладчик переходит в состояние и обнаружил UITextField и изменил высоту, но на устройстве- там без изменений высоты

1 Ответ

1 голос
/ 25 октября 2019

Что я наконец сделал, так это установил UIImageView в качестве контейнера для UISearchBar.

Не работает с простым UIView, я думаю, это связано с внутренним размером контента?

    func showSearchBar() {

        self.searchNavigationItem?.setRightBarButton(nil, animated: false)


        guard let searchBar = self.searchBar else {

            assert(false, "Need a search bar to display")
            return
        }


        self.searchContainer = UIImageView()
        self.searchContainer?.isUserInteractionEnabled = true

        let image = // Some image with the corresponding size.


        self.searchContainer?.image = image
        self.searchContainer?.alpha = 0

        self.searchContainer?.frame = // Same size as the image

        // Here you add the searchContainer into the titleView.
        self.searchNavigationItem?.titleView = self.searchContainer

        searchBar.translatesAutoresizingMaskIntoConstraints = false

        // Create top/bottom/leading/trailing constraints

        self.searchContainer?.addSubview(searchBar)
        searchBar.sizeToFit()

        self.searchContainer?.addConstraints([topConstraint, bottomConstraint, leadingConstraint, trailingConstraint])

         self?.searchContainer?.alpha = 1

    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...