Я использую UISearchController
с его UISearchBar
.
Я хотел бы поместить UISearchBar
в верхнюю часть моего UIViewController
представления с использованием AutoLayout:
import UIKit
class ViewController: UIViewController {
var searchController = UISearchController(searchResultsController: nil)
let myCustomSearchBar = UISearchBar()
var searchBar: UISearchBar {
// return searchController.searchBar
return myCustomSearchBar
}
override func viewDidLoad() {
super.viewDidLoad()
searchController.dimsBackgroundDuringPresentation = false
searchController.obscuresBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false
view.addSubview(searchBar)
configureSearchBarLayout()
searchBar.translatesAutoresizingMaskIntoConstraints = false
}
private func configureSearchBarLayout() {
[
searchBar.leadingAnchor.constraint(equalTo: view.leadingAnchor),
searchBar.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor),
searchBar.trailingAnchor.constraint(equalTo: view.trailingAnchor),
searchBar.heightAnchor.constraint(equalToConstant: 88)
]
.forEach{
$0.isActive = true
}
}
}
Что приводит к отображению следующего вида:
Однако, как только я нажимаю на поисковик, он полностью исчезает с экрана, чтобы никогда больше не появляться.
Если я изменю код для включения базового UISearchBar
, не созданного UISearchController
, он будет работать нормально:
Почему панель поиска UISearchController
работает неправильно, когда я пытаюсь привязать ее к вершине с помощью AutoLayout и как это исправить?