Решение, которое я сделал: установил мои ограничения для TextField в строке поиска. Отключите отображение кнопки «Отмена» (иначе она будет перекрывать панель поиска).
func configureSearch() {
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
definesPresentationContext = false
searchController.searchBar.searchBarStyle = .minimal
searchController.searchBar.placeholder = "Search station"
searchController.searchBar.showsCancelButton = false
if let searchField = searchController.searchBar.value(forKey: "searchField") as? UITextField {
searchField.snp.makeConstraints { (make) in
make.height.equalTo(55)
make.leading.equalToSuperview().offset(20)
make.trailing.equalToSuperview().offset(-20)
}
searchField.textColor = .white
searchField.backgroundColor = .black
searchField.font = UIFont(name: "SFUIText-Regular", size: 14)
}
tableView.tableHeaderView = searchController.searchBar
}
Чтобы отключить searchController (обычно это выполняется с помощью кнопки «Отмена»), я добавляю tapGesture:
let searchTap = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
self.view.addGestureRecognizer(searchTap)
@objc func handleTap(_ sender: UITapGestureRecognizer) {
searchController.isActive = false
}