我正在构建一个基本的 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)
我知道这段代码不会产生预期的行为,但是我可以进行简单的修改以使其正常运行吗?