UISearchController 的搜索栏与第一个 tableview 单元格重叠

Posted

技术标签:

【中文标题】UISearchController 的搜索栏与第一个 tableview 单元格重叠【英文标题】:UISearchController's search bar overlaps first tableview cell 【发布时间】:2015-03-25 19:16:15 【问题描述】:

我正在使用UISearchControllerUISearchBar 也有一个范围栏。搜索栏作为子视图添加到位于UItableView 上方的UIView。我这样做是因为我希望即使在滚动表格视图时搜索栏也始终可见。

问题是范围栏与第一个 tableview 单元格重叠

故事板

范围栏与表格视图单元格重叠

如何防止这种重叠?,我无法在导航栏中显示搜索栏,因为放置在导航栏中的范围栏没有显示。

【问题讨论】:

你可以尝试设置tableView.contentInset = UIEdgeInsetsMake(64, 0, 0, 0),这会将tableView的内容向下推64点......你应该将它设置为范围栏的大小...... @chuthan20 我应该在哪里尝试设置这个,当 UISearchController 激活时是否有触发方法? 您可以将您的视图控制器设置为 UISearchController 的代理,https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchControllerDelegate_Ref/index.html 【参考方案1】:

这对我有用:

在表格视图标题中具有搜索显示控制器和搜索栏。在 TableViewController 中添加 heightForHeaderInSection

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
    return 44; //I used the 44, the height of SearchBar

在您的情况下,您还需要添加范围栏高度。 现在它将始终保持基本高度。

【讨论】:

【参考方案2】:

这对我有用:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
    if (self.searchController.active) 
        return 44; // with scope
     else 
        return 0; // no scope
    

【讨论】:

为我工作!对于带有部分的表,当搜索控制器未激活时,我更改为“返回 20;// 无范围”。因为当为 0 时,这会隐藏部分标题。【参考方案3】:

在 UIViewController 上添加搜索栏和表格视图,如下图所示。不要将搜索栏与表格视图重叠。我在我的应用程序中使用它,它对我来说工作正常。

【讨论】:

我能够按照 cmets 中的建议使用 UIEdgeInsetsMake 使其工作。我的设置与您在图像中所做的完全一样,但这不起作用

以上是关于UISearchController 的搜索栏与第一个 tableview 单元格重叠的主要内容,如果未能解决你的问题,请参考以下文章

UISearchController 搜索栏在活动时与第一个单元格重叠

ViewContoller 顶部的搜索栏与 UITableView 并重新加载数据

如何修复表格视图的搜索栏与状态栏重叠

SwiftUI 搜索栏与导航栏一致

颤振搜索栏与带有firestore的块

在 iOS7 中将搜索栏与导航栏结合时 UISearchbar 空间为空?