При вводе текста на панели поиска макет нарушается

У меня есть tableView:

tableView = UITableView()
view.addSubview(tableView)

tableView.translatesAutoresizingMaskIntoConstraints = false
let constraints = [tableView.topAnchor.constraint(equalTo: view.topAnchor), tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), tableView.heightAnchor.constraint(equalToConstant: view.frame.height * 0.6)]
NSLayoutConstraint.activate(constraints)

И мой searchController выглядит так:

func setupSearchController() {
    searchController = UISearchController(searchResultsController: nil)
    searchController.searchResultsUpdater = self
    searchController.obscuresBackgroundDuringPresentation = false
    searchController.searchBar.placeholder = "Search for a candy"
    navigationItem.searchController = searchController
    definesPresentationContext = true
}

При первой загрузке все нормально. Но когда я нажимаю на панель поиска, чтобы ввести ее, моя панель поиска перемещается вверх, панель навигации становится меньше, и она нарушает мой макет, и между tableView и searchBar появляется пробел:

enter image description here

Как я могу улучшить свои ограничения для перемещения вверх и вниз в моем tableView при изменении размеров панели навигации?

1
0
284
1

Ответы 1

Вам нужно изменить верхнее ограничение табличного представления. Попробуйте заменить это ограничение 2

tableView.topAnchor.constraint(equalTo: searchController.searchBar.bottomAnchor), 
tableView.topAnchor.constraint(equalTo: view.topAnchor)

С этим

tableView.topAnchor.constraint(equalTo: view.topAnchor)

Все остальное сделает автоматическая настройка вставки контента.

Также обратите внимание, что в вашем списке ограничений табличного представления у вас нет ограничения ведущей / горизонтальной позиции. Предлагаю добавить еще и это ограничение

tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor)

Извините, это была опечатка! Забыл убрать якорь searchBar из вопроса. Я обновил свой вопрос, но проблема существует. И у меня ЕСТЬ ведущие и конечные ограничения. Прокрутите код вправо

J. Doe 10.09.2018 12:53

Мне жаль. Это я был виноват! Пожалуйста, взгляните на мой вопрос еще раз. Заранее спасибо!

J. Doe 10.09.2018 12:55

Извините, но я не могу воспроизвести вашу проблему, с вашими ограничениями содержимое tableview перемещается вверх при нажатии на панель поиска. Пожалуйста, опубликуйте здесь или на GitHub проверяемый пример.

LorenzOliveto 10.09.2018 14:15

Другие вопросы по теме