如何检测UITableView标题(表头,而不是节标题)何时滚动到可见区域?
提前致谢!
答案 0 :(得分:9)
我能想到几种可能的解决方案:
<强> 1)强> 您可以使用此委托的方法:
的tableView:didEndDisplayingHeaderView:forSection:
但是,只有在方法
中提供标题时才会调用此方法的tableView:viewForHeaderInSection:
您说'不是节标题&#39;,但您可以使用分组tableView中的第一个节头作为表headerView。 (分组用于标题将与表格视图一起滚动)
<强> 2)强> 如果您不想使用分组tableView和节标题,则可以使用scrollView的委托(UITableViewDelegate符合UIScrollViewDelegate)。只需检查tableView何时滚动到足以消失tableHeaderView。请参阅以下代码:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
static CGFloat lastY = 0;
CGFloat currentY = scrollView.contentOffset.y;
CGFloat headerHeight = self.headerView.frame.size.height;
if ((lastY <= headerHeight) && (currentY > headerHeight)) {
NSLog(@" ******* Header view just disappeared");
}
if ((lastY > headerHeight) && (currentY <= headerHeight)) {
NSLog(@" ******* Header view just appeared");
}
lastY = currentY;
}
希望它有所帮助。
答案 1 :(得分:3)
以下是tableView如何指定自己tableViewHeader
是否可见(Swift 3):
extension UITableView{
var isTableHeaderViewVisible: Bool {
guard let tableHeaderView = tableHeaderView else {
return false
}
let currentYOffset = self.contentOffset.y;
let headerHeight = tableHeaderView.frame.size.height;
return currentYOffset < headerHeight
}
}