我有一个搜索栏,我将其放置在Google Place AutoComplete的导航栏内。当它出现时显示正常,但是当你点击它内部时,它会稍微向下移动并保持在那里,即使你点击取消,直到你将titleView设置为nil并再次返回,然后它重置。这是我的viewDidLoad方法中调用的相关代码:
resultsViewController = GMSAutocompleteResultsViewController()
resultsViewController?.delegate = self
searchController = UISearchController(searchResultsController: resultsViewController)
searchController?.searchResultsUpdater = resultsViewController
searchController?.searchBar.sizeToFit()
searchController?.hidesNavigationBarDuringPresentation = false
definesPresentationContext = true
navigationController?.navigationBar.isTranslucent = true
searchController?.hidesNavigationBarDuringPresentation = false
navigationItem.titleView = nil
然后在需要时我将它设置为:
navigationItem.titleView = searchController?.searchBar
searchController.searchBar.frame = CGRect(center: CGPoint(x: 15,y: 10), size: CGSize(width: 30, height: 30))
let vu = UIView(frame: CGRect(center: .zero, size: CGSize(width: self.view.frame.width - 10, height: 40)))
vu.addSubview(searchController.searchBar)
vu.backgroundColor = UIColor.clear
navigationItem.titleView = vu
根据您的需要设置框架