UITableView 单元格重叠搜索栏视图设置为 NavigationBar 的 searchController

问题描述

我有一个 UISearchController 配置为导航栏的 searchController。我有以下设置。

let searchController = UISearchController(searchResultsController: nil)
searchController.hidesNavigationBarDuringPresentation = true
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.placeholder = LocalisedStrings.searchChannels
searchController.searchBar.searchBarStyle = .minimal
searchController.searchBar.delegate = self
navigationItem.hidesSearchBarWhenScrolling = false
navigationItem.searchController = searchController

我有一个 UITableView 作为 ViewController 视图的子视图,如下所示:

func setupView() {
    extendedLayoutIncludesOpaqueBars = true
    view.backgroundColor = secondarySurfaceColor
    view.addSubview(channelsTV)
    view.addSubview(emptyView)
    
    NSLayoutConstraint.activate([
        channelsTV.leadingAnchor.constraint(equalTo: view.leadingAnchor),channelsTV.topAnchor.constraint(equalTo: view.topAnchor),channelsTV.trailingAnchor.constraint(equalTo: view.trailingAnchor),channelsTV.bottomAnchor.constraint(equalTo: view.bottomAnchor),emptyView.centerXAnchor.constraint(equalTo: view.centerXAnchor),emptyViewCenterYAnchorConstraint,])
}

我面临以下问题,即在搜索控制器下可见的 UITableView 项的小滚动问题,并且在正常向上/向下滚动吊索期间是正常的。

enter image description here

期望的行为是 tableView 单元格不应与搜索栏和导航栏重叠。但是当tableView滚动时,导航栏应该从大标题折叠到小标题。有什么办法吗?非常感谢在此方面的帮助。如果您需要更多详细信息,请发表评论

解决方法

试试这个技巧:

view.addSubview(UIView()) // To prevent the large tile nav bar from collapsing

我忽略了原因,但这会破坏 UIScrollView 和导航栏之间的链接...这可能会解决您的问题。