使用iOS 10.3进行测试时,我无法删除第一个表行的间隙。我尝试了在automaticallyAdjustsScrollViewInsets
等其他帖子上建议的所有解决方案,在层次结构中的UITableView上方添加了一个虚拟视图,例如here - 但都没有成功。
以下是设置和方案。
我有一个UITiewController,它有UITableView。叫它V1。它嵌入在导航控制器中。
我将viewDidLoad()中的UISearchController添加到tableview标头中。我没有设置任何以编程方式控制任何布局的约束。
self.searchController.obscuresBackgroundDuringPresentation = false
self.searchController.hidesNavigationBarDuringPresentation = true
if #available(iOS 11.0, *) {
self.searchController.searchBar.delegate = self
self.navigationItem.searchController = self.searchController
self.navigationController?.navigationBar.prefersLargeTitles = true
self.searchController.searchBar.scopeButtonTitles = ["All","A","B"]
self.navigationItem.hidesSearchBarWhenScrolling = true
} else {
self.searchController.searchBar.delegate = self
self.searchController.searchBar.scopeButtonTitles = ["All","A","B"]
tableView.tableHeaderView = searchController.searchBar
self.searchController.searchBar.sizeToFit()
}
我有另一个VC(表),我使用unwind segue从中捕获数据。叫它V2。
我在展开方法中执行以下操作
DispatchQueue.main.async {
self.searchController.searchBar.text = searchText
self.searchController.isActive = true
let scope = self.searchController.searchBar.scopeButtonTitles![self.searchController.searchBar.selectedScopeButtonIndex]
self.filterContentForSearchText(searchText, scope: scope)
}
场景1 - 工作正常 1.打开V1在表头中准确显示行和搜索栏。 2.点击打开V2的栏按钮 3.选择一个值并返回 4.返回值分配给搜索栏,搜索栏在导航栏中打开 5表显示匹配V2的返回值的行 第一行和搜索栏之间没有差距
场景2 - 失败。 1.打开V1在表头中准确显示行和搜索栏。 2.向上滚动行,使标题位于导航栏下方 3.点击打开V2的栏按钮 4.选择一个值并返回 5.返回值分配给搜索栏,搜索栏在导航栏中打开 5表显示匹配V2
的返回值的行 此方案中的问题是第一行和搜索栏之间出现间隙。 如果我点击搜索栏上的取消按钮,则会在表格顶部恢复搜索栏,但搜索栏即标题行和导航栏之间存在间隙。
我注意到,当上述情况发生时,tableview的起源是-88。
我尝试将表视图顶部约束设置为超级视图,即顶部布局指南的视图和底部。
可能是什么问题?附上截图。