如何检测 UITableView header 何时从可见区域滚动?
How to detect when a UITableView header is scrolled off visible area?
如何检测 UITableView header(table header,而不是部分 header)何时滚出可见区域?
提前致谢!
我能想到几个可能的解决方案:
1)
您可以使用此委托的方法:
tableView:didEndDisplayingHeaderView:forSection:
但是,只有在方法中提供header时才会调用此方法
tableView:viewForHeaderInSection:
您说的是 'not section header',但您可以使用分组 table 视图中的第一部分 header 作为 table header 视图。
(分组是为了 header 会和 table 视图一起滚动)
2)
如果你不想使用grouped tableView和section header,你可以使用scrollView的delegate(UITableViewDelegate conforms to 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;
}
希望对您有所帮助。
以下是 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
}
}
如何检测 UITableView header(table header,而不是部分 header)何时滚出可见区域?
提前致谢!
我能想到几个可能的解决方案:
1) 您可以使用此委托的方法:
tableView:didEndDisplayingHeaderView:forSection:
但是,只有在方法中提供header时才会调用此方法
tableView:viewForHeaderInSection:
您说的是 'not section header',但您可以使用分组 table 视图中的第一部分 header 作为 table header 视图。 (分组是为了 header 会和 table 视图一起滚动)
2) 如果你不想使用grouped tableView和section header,你可以使用scrollView的delegate(UITableViewDelegate conforms to 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;
}
希望对您有所帮助。
以下是 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
}
}