UISearchController.searchBar as tableHeaderView 下拉时导致 UITableView 顶部出现空白 UIView
Posted
技术标签:
【中文标题】UISearchController.searchBar as tableHeaderView 下拉时导致 UITableView 顶部出现空白 UIView【英文标题】:UISearchController.searchBar as tableHeaderView causing a blank UIView on the top of a UITableView when pulling down 【发布时间】:2020-07-02 05:23:00 【问题描述】:我一直使用UISearchController.searchBar
作为UITableView
的tableHeaderView
,当我拉下tableView时,我的tableView顶部会插入一个奇怪的空白UIView
。即使开启了深色模式,这个奇怪的视图总是有浅灰色的背景颜色:
enter image description here
但是当我将一个普通的UIView设置为tableHeaderView时,一切都很好:
enter image description here
在 Debug View Hierarchy 中,UIView 插入到任何单元格之前和 searchBar 之后:
enter image description here
但是当我不拉下 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
【问题讨论】:
【参考方案1】:这似乎是一个奇怪的副作用,我找到的解决方法是创建一个具有所需颜色的视图并将其指定为 tableView 的背景视图
【讨论】:
以上是关于UISearchController.searchBar as tableHeaderView 下拉时导致 UITableView 顶部出现空白 UIView的主要内容,如果未能解决你的问题,请参考以下文章