从网上下的demo;
比较方便直接拿来用了。
关键代码:
//创建下拉刷新的view 并加入tableview
EGORefreshTableHeaderView *_refreshHeaderView;
if (_refreshHeaderView == nil) {
EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.tableView.bounds.size.height, self.view.frame.size.width, self.tableView.bounds.size.height)];
view.delegate = self;
[self.tableView addSubview:view];
_refreshHeaderView = view;
[view release];
}
#pragma mark -
#pragma mark Data Source Loading / Reloading Methods
- (void)reloadTableViewDataSource{
_reloading = YES;
}
- (void)doneLoadingTableViewData{
_reloading = NO;
[_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.tableView];
}
#pragma mark -
#pragma mark UIScrollViewDelegate Methods
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
[_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
[_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];
}
#pragma mark EGORefreshTableHeaderDelegate Methods
//下拉到一定距离,手指放开时调用 //加载数据,更新UI
- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{
[self reloadTableViewDataSource];
//停止加载,弹回下拉
[self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:2.0];
if (_barView == nil) {
UIImage *img = [[UIImage imageNamed:@"timeline_new_status_background.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:5];
_barView = [[UIImageView alloc] initWithImage:img];
_barView.frame = CGRectMake(5, -40, 320-10, 40);
[self.view addSubview:_barView];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
label.tag = 100;
label.font = [UIFont systemFontOfSize:16.0f];
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor clearColor];
[_barView addSubview:label];
[label release];
}
UILabel *label = (UILabel *)[_barView viewWithTag:100];
label.text = [NSString stringWithFormat:@"%d条微博更新",10];
[label sizeToFit];
CGRect frame = label.frame;
frame.origin = CGPointMake((_barView.frame.size.width - frame.size.width)/2, (_barView.frame.size.height - frame.size.height)/2);
label.frame = frame;
[self performSelector:@selector(updateUI) withObject:nil afterDelay:2.0];
}
- (void)updateUI {
[UIView animateWithDuration:0.6 animations:^{
CGRect frame = _barView.frame;
frame.origin.y = 5;
_barView.frame = frame;
} completion:^(BOOL finished){
if (finished) {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelay:1.0];
[UIView setAnimationDuration:0.6];
CGRect frame = _barView.frame;
frame.origin.y = -40;
_barView.frame = frame;
[UIView commitAnimations];
}
}];
for (int i = 0; i<10; i++) {
[_list addObject: [NSString stringWithFormat:@"微博%d",i]];
}
NSString *path = [[NSBundle mainBundle] pathForResource:@"msgcome" ofType:@"wav"];
NSURL *url = [NSURL fileURLWithPath:path];
SystemSoundID soundId;
AudioServicesCreateSystemSoundID((CFURLRef)url, &soundId);
AudioServicesPlaySystemSound(soundId);
[_tableView reloadData];
}
- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{
return _reloading; // should return if data source model is reloading
}
//取得下拉刷新的时间
- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{
return [NSDate date]; // should return date data source was last changed
}