为什么在searchBar和tableview之间添加空格?

我有一个tableview控制器。 我添加了searchBar。 但是,当我点击search条,我有一个空格之间的searchBar和TableView? 为什么? 它是如何修复的? 在向下我添加屏幕截图和代码tableViewController列表。 感谢帮助。

点击searchBar后

点击searchBar

!!!!!! – 列表TableViewController – !!!!!!

class AlfavitController: UITableViewController, UISearchResultsUpdating { var searchController : UISearchController! var resultController = UITableViewController() override func viewDidLoad() { super.viewDidLoad() self.downloadData(param: Manager.id) tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") self.searchController = UISearchController(searchResultsController: self.resultController) self.tableView.tableHeaderView = self.searchController.searchBar self.searchController.searchResultsUpdater = self self.resultController.tableView.dataSource = self self.resultController.tableView.delegate = self definesPresentationContext = true } func updateSearchResults(for searchController: UISearchController) { self.arFiltLet = self.arWords.filter{(lett : String) -> Bool in if lett.lowercased().contains(self.searchController.searchBar.text!.lowercased()){ return true }else{ return false } } self.resultController.tableView.reloadData() } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { if tableView == self.tableView { return self.arWords.count }else{ return self.arFiltLet.count } } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = self.tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) if tableView == self.tableView{ cell.textLabel?.text = self.arWords[indexPath.row] }else{ cell.textLabel?.text = self.arFiltLet[indexPath.row] } return cell } 

发生这种情况的原因是UIViewController的属性自动调用了ScrollViewInsets,它是一个布尔值,指示视图控制器是否应该自动调整其滚动视图插图,并且默认为YES。

解:-

在你的viewDidLoad()中写下面的代码:

 automaticallyAdjustsScrollViewInsets = false 

或者通过故事板/ XIB来设置,无论你使用哪一个:

在这里输入图像说明