Swift ios11 NavigationItem SearchBar 不会完全隐藏

Posted

技术标签:

【中文标题】Swift ios11 NavigationItem SearchBar 不会完全隐藏【英文标题】:Swift ios11 NavigationItem SearchBar won't hide completely 【发布时间】:2017-11-07 02:51:05 【问题描述】:

ios11 / Swift 4 中将搜索控制器添加到 navigationItem 时遇到问题。

基本上一切都按预期工作,下拉将显示搜索栏,搜索工作正常。但是,当尝试通过向上滚动来隐藏搜索栏时...该栏不会完全隐藏并保持为细条(见下文)。

我已将我的搜索控制器声明如下:

let searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.scopeButtonTitles = ["All", "Samples"]
searchController.searchBar.delegate = self
navigationItem.searchController = searchController

之前(向下滚动以显示搜索栏):

之后(向上滚动隐藏):

【问题讨论】:

这是因为它只有在你向下滚动足够多的情况下才会完全隐藏搜索栏。 当表格中只有几行时似乎会出现问题。 【参考方案1】:

正如Apple forums thread 中所讨论的那样。

hidesSearchBarWhenScrolling 的值为 true 时,搜索栏只有在滚动位置等于内容视图的顶部时才可见,这是在您使用 UIViewController 的情况下,该视图属性是普通的 UIView(它不是 UIScrollView 的子类)。

尝试使用 UITableViewController 或 ScrollView,它应该可以正常工作

【讨论】:

【参考方案2】:

在我的情况下,只有当表中有少量项目时才会发生这种情况。 我来到了一个非技术性的,而是一个合乎逻辑的解决方案,仅当列表中有 >10 个项目时才显示搜索栏。无论如何,如果您只有少量项目,则无需搜索。

【讨论】:

【参考方案3】:

尝试添加这个

self.navigationItem.hidesSearchBarWhenScrolling = true

【讨论】:

以上是关于Swift ios11 NavigationItem SearchBar 不会完全隐藏的主要内容,如果未能解决你的问题,请参考以下文章

iOS 11 Swift 下的 UITabBar 转换问题

Swift 3 - iOS 11.2 上的 UICollectionview 问题

ios11上swift中的CMSensorDataList枚举

iOS 11中的imageView使用Swift

collectionView:layout:sizeForItemAt 未调用 swift 4 iOS 11

swift tableView.contentSize.height 不同 iOS 13 和 iOS 11 ,为啥?