UISearchController 搜索栏在出现时向下移动

Posted

技术标签:

【中文标题】UISearchController 搜索栏在出现时向下移动【英文标题】:UISearchController search bar shifting down when presented 【发布时间】:2016-01-27 10:48:11 【问题描述】:

问题:搜索栏出现时会向下移动。在呈现之前,该栏位于导航栏的正下方。

更多信息:

导航栏只是一个 UINavigationBar,通过 storyboard 手动添加到 UIViewController 中 最重要的是,UIViewController 使用 UIPresentationController 来创建呈现的 VC 从顶部略微偏移的效果,并且呈现的 VC 被缩小并“落后于”呈现的 VC。如果我不使用 UIPresentationController,则不会发生这种转变。 searchController.hidesNavigationBarDuringPresentation = NO

有什么想法吗?

【问题讨论】:

【参考方案1】:

self.definesPresentationContext = YES; 或者 self.edgesForExtendedLayout = UIRectEdgeNone;

另一方面,最好将搜索栏添加到表格视图的标题中。

【讨论】:

试过了,还是不行。搜索栏当前是 tableview 的标题。谢谢。【参考方案2】:
if #available(ios 11.0, *) 
    navigationItem.searchController = searchController
    navigationItem.hidesSearchBarWhenScrolling = false
 else 
    tableView.tableHeaderView = searchController.searchBar

如果在iOS 11.0下将searchBar设置为tableHeaderView会出现这个问题,所以可以这样操作。一切都会好起来的!

【讨论】:

以上是关于UISearchController 搜索栏在出现时向下移动的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 13 中使用 UISearchController 时,状态栏在 iOS 中变为白色

搜索栏在活动时移动

导航栏在搜索结果表视图中消失

如何在标题中制作搜索栏?

标签栏和 UISearchController 出现黑屏

使 UISearchController 搜索栏自动激活