UISearchController 的搜索栏与第一个 tableview 单元格重叠
Posted
技术标签:
【中文标题】UISearchController 的搜索栏与第一个 tableview 单元格重叠【英文标题】:UISearchController's search bar overlaps first tableview cell 【发布时间】:2015-03-25 19:16:15 【问题描述】:我正在使用UISearchController
,UISearchBar
也有一个范围栏。搜索栏作为子视图添加到位于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 搜索栏在活动时与第一个单元格重叠