EGORefreshTableHeaderView下拉刷新(三)——自定义更新时间


EGORefreshTableHeaderView是个好东西,把复杂的下拉刷新实现开源了出来。

当然,有些地方我们可以进行一些优化,比如下拉的展现效果。



这个效果怎么实现呢?我们需要修改引入的EGORefreshTableHeaderView.m文件,代码如下:

- (void)egoRefreshScrollViewDidScroll:(UIScrollView *)scrollView {	
	
	if (_state == EGOOPullRefreshLoading) {
		
		CGFloat offset = MAX(scrollView.contentOffset.y * -1, 0);
		offset = MIN(offset, 60);
		scrollView.contentInset = UIEdgeInsetsMake(offset, 0.0f, 0.0f, 0.0f);
		
	} else if (scrollView.isDragging) {
		//计算更新时间
        [self refreshLastUpdatedDateNew];
        
		BOOL _loading = NO;
		if ([_delegate respondsToSelector:@selector(egoRefreshTableHeaderDataSourceIsLoading:)]) {
			_loading = [_delegate egoRefreshTableHeaderDataSourceIsLoading:self];
		}
		
		if (_state == EGOOPullRefreshPulling && scrollView.contentOffset.y > -65.0f && scrollView.contentOffset.y < 0.0f && !_loading) {
			[self setState:EGOOPullRefreshNormal];
		} else if (_state == EGOOPullRefreshNormal && scrollView.contentOffset.y < -65.0f && !_loading) {
			[self setState:EGOOPullRefreshPulling];
		}
		
		if (scrollView.contentInset.top != 0) {
			scrollView.contentInset = UIEdgeInsetsZero;
		}
		
	}
	
}

注意红色的那一行,就是自定义实现更新时间格式。


- (void)refreshLastUpdatedDateNew {
	
	if ([_delegate respondsToSelector:@selector(egoRefreshTableHeaderDataSourceLastUpdated:)]) {
		NSDate *date = [_delegate egoRefreshTableHeaderDataSourceLastUpdated:self];
		
        _lastUpdatedLabel.text = [NSString stringWithFormat:@"上次更新: %@", [self formatTimeStrNew:date]];
		
	} else {
		
		_lastUpdatedLabel.text = nil;
		
	}
    
}

//自定义时间展示
- (NSString *)formatTimeStr:(NSDate *)lastDate
{
    NSString *timeStr = @"";
    
    if (!lastDate) {
        return timeStr;
    }
    
    [NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehaviorDefault];
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];
    return [dateFormatter stringFromDate:lastDate];
    
}


注意,refreshLastUpdateDateNew是在egoRefreshScrollViewDidScroll函数里被调用的,这样才能做到每次更新。

另外,记得把

setState:(EGOPullRefreshState)aState
里的原来时间展示的代码屏蔽掉。

//[self refreshLastUpdatedDate];





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值