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