在使用iOS 10.3进行测试时,我无法删除第一个表行上的间隙。我尝试了其他帖子上建议的所有解决方案,比如
automaticallyAdjustsScrollViewInsets
,在层次结构中的UITableView上方添加了一个虚拟视图,例如。
here
-但都没有成功。
这是设置和场景。
我有一个UIViewController,它有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(一个表),我从中捕获数据使用展开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-工作正常
一。打开V1可以在表头准确显示行和搜索栏。
2。点击打开V2的条形按钮
三。选择值并返回
四。返回值分配给搜索栏,搜索栏在导航栏中打开
5表显示与V2返回值匹配的行
第一行和搜索栏之间没有间隙
场景2-失败了。
一。打开V1可以在表头准确显示行和搜索栏。
2。向上滚动行,使标题位于导航栏下
三。点击打开V2的条形按钮
四。选择值并返回
5个。返回值分配给搜索栏,搜索栏在导航栏中打开
5表显示与V2返回值匹配的行
这种情况下的问题是第一行和搜索栏之间出现间隙。
如果单击搜索栏上的“取消”按钮,则搜索栏将恢复到表的顶部,但搜索栏ie标题行和导航栏之间存在间隙。
我注意到tableview的原点是-88。
我尝试将表视图顶部约束设置为superview ie视图和顶部布局指南的底部。
有什么问题吗?附截图。
-
屏幕截图显示
积极的
搜索控制器和第一个单元格。
-
屏幕截图显示
不活动
搜索控制器和第一个单元格。
-
可视化调试器以橙色显示ViewController视图,以绿色显示tableview,以扁平梅花显示header视图。我选择的第一个单元格上方有一个视图。不知道是什么,但这是问题的根源吗?在最下面的桌子上也可以看到。
谢谢
阿施施