需要非常了解tabview的offset、inset、frame这3个属性,通过计算并控制这3个属性来显示下拉刷新操作
- (void)dealHeaderRefresh{
CGFloat offsetY = -(self.tableView.contentInset.top + self.headerView.gg_height);
if (self.tableView.contentOffset.y <= offsetY) { // tabview的偏移量小于等于 (内边距 + 标题栏高度),表示要开始刷新了
self.headerLabel.text = @"松开刷新";
self.headerLabel.backgroundColor = [UIColor greenColor];
}else{
self.headerLabel.text = @"下拉可以刷新";
self.headerLabel.backgroundColor = [UIColor redColor];
}
}
- (void)headerBeginRefresh{
if (self.isHeaderRefresh) return;
self.headerRefresh = YES;
self.headerLabel.text = @"正在刷新";
self.headerLabel.backgroundColor = [UIColor orangeColor];
[UIView animateWithDuration:0.3 animations:^{
// 修改tabview的内边距,让用户看到正在刷新这几个字
UIEdgeInsets contentInset = self.tableView.contentInset;
contentInset.top += self.headerView.gg_height;
self.tableView.contentInset = contentInset;
self.tableView.contentOffset = CGPointMake(self.tableView.contentOffset.x, - contentInset.top);
}];
// 发送数据请求
[self loadNewTopics];
}
- (void)headerEndRefresh{
self.headerRefresh = NO;
[UIView animateWithDuration:0.3 animations:^{
// 修改tabview的内边距,隐藏起来
UIEdgeInsets contentInset = self.tableView.contentInset;
contentInset.top -= self.headerView.gg_height;
self.tableView.contentInset = contentInset;
}];
self.headerLabel.text = @"下拉可以刷新";
self.headerLabel.backgroundColor = [UIColor redColor];
}