小编REl*_*ott的帖子

如何最初在导航栏中显示搜索栏,但当用户向上滚动时仍然隐藏它?

我正在构建一个基本的 ViewController,其中包含具有多个部分的 CollectionViewController。我希望在 NavigationBar 中包含一个 UISearchBar,但 Swift 似乎只允许两种行为选项:最初隐藏搜索栏,然后在用户向下滚动时显示它,或者始终显示搜索栏。

我希望搜索栏的功能就像在消息应用程序中一样,用户无需滚动即可显示搜索栏,然后在用户向下滚动页面时隐藏。我确信有一个简单的解决方案,但我对 iOS 开发相当陌生,并且无法找到任何以前提出的问题。

搜索栏始终存在的情况的示例:

在此输入图像描述

用户必须向下滚动才能显示搜索栏的示例:

在此输入图像描述

控制器和搜索栏的初始化:

let searchController = UISearchController(searchResultsController: nil)

let searchBar: UISearchBar = {
    let search = UISearchBar()
    search.placeholder = "Search"
    search.translatesAutoresizingMaskIntoConstraints = false
    search.sizeToFit()
    search.barStyle = .default
    return search
}()

// Truncated...

// Called from viewDidLoad()
func configureSearchBar() {
    searchController.searchResultsUpdater = self
    searchController.obscuresBackgroundDuringPresentation = false
    searchController.searchBar.placeholder = "Search"
    searchController.searchBar.translatesAutoresizingMaskIntoConstraints = false
    searchController.isActive = true
    definesPresentationContext = true

    navigationItem.title = "Test Title"
    navigationItem.searchController = searchController
    navigationItem.hidesSearchBarWhenScrolling = false
}
Run Code Online (Sandbox Code Playgroud)

我知道这段代码不会产生预期的行为,但是我可以进行简单的修改以使其正常运行吗?

uinavigationbar uisearchbar swift

5
推荐指数
1
解决办法
2567
查看次数

标签 统计

swift ×1

uinavigationbar ×1

uisearchbar ×1