我有一个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之间会出现空白:
更改导航栏大小后,如何改善我在tableView上下移动的约束?
答案 0 :(得分:0)
您必须更改表格视图的主要约束。 尝试替换这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)