我在UISearchBar
中添加UINavigationController
作为subView
,但subView
表现得很奇怪。它隐藏UITableView
的部分标题,当我点击它时它会垂直跳转到中心。
如何将UISearchBar
的背景颜色更改为橙色?我尝试了色彩和背景色,但它没有用。
var searchController: UISearchController!
var searchResultController: UITableViewController!
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.isTranslucent = false
navigationController?.navigationBar.prefersLargeTitles = true;
navigationController?.navigationBar.largeTitleTextAttributes = [
NSAttributedStringKey.foregroundColor : UIColor.white
]
navigationController?.navigationBar.barTintColor = UIColor.orange
searchController = UISearchController(searchResultsController: searchResultController)
self.searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
self.definesPresentationContext = true
let searchBar = searchController.searchBar
searchBar.searchBarStyle = .default
searchBar.tintColor = UIColor.orange
searchBar.backgroundColor = UIColor.orange
view.addSubview(searchBar)
}
答案 0 :(得分:1)
我添加了以下行来隐藏详细ViewController上的搜索栏,但它导致搜索栏跳了下来。
self.definesPresentationContext = true
我删除了该行,但我在详细的ViewController上有搜索栏,这就是我修复它的方法。
我将搜索栏变量传递给详细视图控制器并将其属性设置为隐藏。我还添加了以下代码行,以便在用户返回原始视图时返回搜索栏。
override func viewWillDisappear(_ animated: Bool) {
searchBar.isHidden = false
}
以下代码行修复了隐藏表视图的第一行或节标题的第二个问题。
self.tableView.contentInset = UIEdgeInsetsMake(50,0,0,0);
答案 1 :(得分:0)
尝试使用以下代码段。
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
tableView.invalidateIntrinsicContentSize()
}