这里是我想要做的:

截图摘自iPhone:

我正在开发一个简单的应用程序,并添加了一个可编程的UISearchbar,但我真的很困惑为什么要从顶部显示额外的空间,比如第二个图像。但是当我写UISearchbar时,我们的位置会改变,就像第一个图像。
这是我的代码:
let searchController = UISearchController(searchResultsController: nil)
override func viewDidLoad() {
super.viewDidLoad()
self.searchController.obscuresBackgroundDuringPresentation = false
self.searchController.searchBar.placeholder = "Search"
self.searchController.searchBar.barStyle = .black
self.searchController.searchBar.delegate = self
self.definesPresentationContext = true
if #available(iOS 11.0, *) {
navigationItem.searchController = searchController
} else {
// Fallback on earlier versions
navigationItem.titleView = searchController.searchBar
}
}
extension starControl: UISearchBarDelegate{
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar){
//Show Cancel
searchBar.setShowsCancelButton(true, animated: true)
searchBar.tintColor = .black
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String){
}
func searchBarSearchButtonClicked(_ searchBar: UISearchBar){
searchBar.setShowsCancelButton(false, animated: true)
searchBar.resignFirstResponder()
guard let term = searchBar.text , term.isEmpty == false else{
return
}
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar){
searchBar.setShowsCancelButton(false, animated: true)
searchBar.text = String()
searchBar.resignFirstResponder()
}
}有人能给我解释一下如何解决这个问题吗?我已经试过解决这个问题了,但还没有结果。
任何帮助都将不胜感激。
提前谢谢。
发布于 2018-12-26 07:51:35
这是最新的迅捷4.2代码和搜索栏的最新功能,只需将该函数放入控制器并从viewDidLoad调用。
func setupNavBar() {
self.title = "Controller title"
self.navigationController?.navigationBar.prefersLargeTitles = false
self.navigationController?.navigationItem.largeTitleDisplayMode = .always
let searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.delegate = self
navigationItem.searchController = searchController
}https://stackoverflow.com/questions/53928905
复制相似问题