UISearchController.searchBar作为tableHeaderView,在下拉时导致UITableView顶部出现空白UIView
我一直在使用UISearchController.searchBar作为tableHeaderView,在下拉时导致UITableView顶部出现空白UIView,uitableview,uisearchcontroller,Uitableview,Uisearchcontroller,我一直在使用UISearchController.searchBar作为UITableView的tableHeaderView,当我下拉tableView时,一个奇怪的空白UIView将插入到我的tableView顶部。即使启用了暗模式,此奇怪视图的背景色始终为浅灰色: 但当我将普通UIView设置为tableHeaderView时,一切都很好: 在调试视图层次结构中,UIView插入任何单元格之前和搜索栏之后: 但当我不下拉UITableView时,UIView将从视图层次结构中消失 下
UISearchController.searchBar
作为UITableView
的tableHeaderView
,当我下拉tableView时,一个奇怪的空白UIView
将插入到我的tableView顶部。即使启用了暗模式,此奇怪视图的背景色始终为浅灰色:
但当我将普通UIView设置为tableHeaderView时,一切都很好:
在调试视图层次结构中,UIView插入任何单元格之前和搜索栏之后:
但当我不下拉UITableView时,UIView将从视图层次结构中消失
下面是我运行的代码:
class ViewController: UIViewController {
let tableView = UITableView(frame: .zero, style: .plain)
let normalHeaderView = UIView()
let searchController = UISearchController()
let items: [String] = [
"Item 1",
"Item 2",
"Item 3",
"Item 4",
"Item 5",
"Item 6",
"Item 7"
]
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .green
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
tableView.backgroundColor = .blue
tableView.dataSource = self
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.width.height.equalToSuperview()
}
tableView.tableHeaderView = searchController.searchBar
// normalHeaderView.backgroundColor = .red
// tableView.tableHeaderView = normalHeaderView
// normalHeaderView.snp.makeConstraints { make in
// make.width.equalToSuperview()
// make.height.equalTo(50)
// }
}
}
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = items[indexPath.row]
return cell
}
}
这似乎是一个奇怪的副作用,我找到的解决办法是创建一个具有所需颜色的视图,并将其指定为tableView的backgroundView。这似乎是一个奇怪的副作用,我找到的解决办法是创建一个具有所需颜色的视图,并将其指定为tableView的backgroundView