此特定视图是UINavigationController的一部分,因此导航栏由UINavigationController提供。我在呈现视图控制器的viewDidLoad()
中调用以下代码。
func buildSearchBar() {
self.definesPresentationContext = true
let searchController = UISearchController(searchResultsController: nil)
self.navigationItem.searchController = searchController
self.navigationItem.hidesSearchBarWhenScrolling = false
self.navigationController?.navigationBar.barTintColor = UIColor(displayP3Red: 30/255, green: 50/255, blue: 49/255, alpha: 1.0)
searchController.searchBar.backgroundColor = UIColor(displayP3Red: 30/255, green: 50/255, blue: 49/255, alpha: 1.0)
}
使用界面构建器,为导航控制器的导航栏设置相同的颜色。
激活搜索栏时,状态栏的背景变为黑色。
我已经在StackOverflow上多次看到此问题,并且没有有效的解决方案。对于大多数人来说,当他们设置搜索控制器后,它似乎可以立即使用。最新的示例使用类似的代码,并且没有提及存在此问题。
答案 0 :(得分:0)
我在Xcode 10.1和osx 10.14.1中都使用了iPhone和模拟器,但没有重复这个问题。
如果要获得相同的颜色,只需添加self.navigationController?.navigationBar.isTranslucent = false
func buildSearchBar() {
self.definesPresentationContext = true
let searchController = UISearchController(searchResultsController: nil)
self.navigationItem.searchController = searchController
self.navigationItem.hidesSearchBarWhenScrolling = false
self.navigationController?.navigationBar.barTintColor = UIColor(displayP3Red: 30/255, green: 50/255, blue: 49/255, alpha: 1.0)
self.navigationController?.navigationBar.isTranslucent = false
searchController.searchBar.backgroundColor = UIColor(displayP3Red: 30/255, green: 50/255, blue: 49/255, alpha: 1.0)
}