代码之家  ›  专栏  ›  技术社区  ›  ashishn

使用UISearchController时第一个表上方的间隙

  •  0
  • ashishn  · 技术社区  · 6 年前

    在使用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视图和顶部布局指南的底部。

    有什么问题吗?附截图。

    1. 屏幕截图显示 积极的 搜索控制器和第一个单元格。 enter image description here
    2. 屏幕截图显示 不活动 搜索控制器和第一个单元格。 enter image description here
    3. 可视化调试器以橙色显示ViewController视图,以绿色显示tableview,以扁平梅花显示header视图。我选择的第一个单元格上方有一个视图。不知道是什么,但这是问题的根源吗?在最下面的桌子上也可以看到。 enter image description here

    谢谢 阿施施

    0 回复  |  直到 6 年前