我有一个 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 的约束?
最佳答案
您必须更改表格 View 的顶部约束。 尝试替换这 2 个约束
tableView.topAnchor.constraint(equalTo: searchController.searchBar.bottomAnchor),
tableView.topAnchor.constraint(equalTo: view.topAnchor)
有了这个
tableView.topAnchor.constraint(equalTo: view.topAnchor)
自动内容插入调整将完成剩下的工作。
另请注意,在 TableView 约束列表中,您没有前导/水平位置约束。我建议也添加这个约束
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor)
关于ios - 在搜索栏上键入会破坏布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52254459/