我正在尝试在我当前的应用程序上模仿 iOS Safari 中的搜索栏行为:
我主要希望当用户滚动内容时导航栏向上滚动到一个非常小的版本,并在用户向上滚动时返回。
我尝试过使用scrollViewDidScroll,但我似乎无法让它模仿这种行为。我不确定是否将搜索栏正确添加到导航栏。
let searchBar: UISearchBar = {
let sb = UISearchBar()
sb.autocapitalizationType = .none
sb.autocorrectionType = .no
sb.keyboardAppearance = UIKeyboardAppearance.default
sb.placeholder = "Search"
return sb
}()
fileprivate func setupNav() {
//Basic Setup
navigationController?.navigationBar.isTranslucent = true
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
//Search Bar
searchBar.sizeToFit()
navigationItem.titleView = searchBar
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
//Implement
}
最佳答案
let searchController = UISearchController(searchResultsController: nil)
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search"
searchController.searchResultsUpdater = self
navigationItem.searchController = searchController
definesPresentationContext = true
将您的 SearchController
放入导航项中。这将添加可折叠的SearchBar
。此外,您可以尝试使用导航项提示
在顶部显示非常小的标题。
关于ios - 如何在 Swift 中模仿 safari 的搜索栏 UI/动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57915090/