一丶
有時(shí)候網(wǎng)絡(luò)太快,一下拉,數(shù)據(jù)馬上出來,效果不好看;
需要弄個(gè)最短刷新時(shí)間;
思路:
1.記錄開始刷新時(shí)間
[self.mj_header beginRefreshingWithCompletionBlock:^{
@strongify(self);
self.ZB_beginRefreshTime = [NSDate date];
}];
2.結(jié)束刷新時(shí)間
//判斷時(shí)間間隔,處理時(shí)間
[self.mj_header endRefreshing]
二丶代碼
.h
#import <UIKit/UIKit.h>
@interface UIScrollView (Refresh)
@property (nonatomic, strong) NSDate *ZB_beginRefreshTime;
/**
頭部刷新
*/
- (void)HYD_headerRefreshingBlock:(CompleteBlock)block;
- (void)HYD_headerRefreshingWithTarget:(id)target refreshingAction:(SEL)action;
/**
開始刷新
*/
- (void)HYD_beginRefreshing;
/**
尾部刷新
*/
- (void)HYD_footerRefreshingBlock:(CompleteBlock)block;
- (void)HYD_footerRefreshingWithTarget:(id)target refreshingAction:(SEL)action;
/**
結(jié)束刷新
*/
- (void)HYD_endRefreshing;
@end
.m
//
// UIScrollView+Refresh.m
// hyb
//
// Created by xzb on 16/10/11.
// Copyright ? 2016年 hyb. All rights reserved.
//
#import "UIScrollView+Refresh.h"
#import <objc/runtime.h>
#import <objc/message.h>
static const void *kProperty_ZB_beginRefreshTime = &kProperty_ZB_beginRefreshTime;
@implementation UIScrollView (Refresh)
- (void)setZB_beginRefreshTime:(NSDate *)ZB_beginRefreshTime{
objc_setAssociatedObject(self, kProperty_ZB_beginRefreshTime, ZB_beginRefreshTime, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (NSDate *)ZB_beginRefreshTime{
return objc_getAssociatedObject(self, kProperty_ZB_beginRefreshTime);
}
#pragma mark - 生命周期
#pragma mark - api
- (void)HYD_headerRefreshingWithTarget:(id)target refreshingAction:(SEL)action {
[self
configurationRefreshWithHedaer:[MJRefreshNormalHeader
headerWithRefreshingTarget:target
refreshingAction:action]];
}
- (void)HYD_headerRefreshingBlock:(CompleteBlock)block {
[self configurationRefreshWithHedaer:[MJRefreshNormalHeader
headerWithRefreshingBlock:^{
BLOCK_EXEC(block);
}]];
}
- (void)HYD_beginRefreshing {
@weakify(self);
[self.mj_header beginRefreshingWithCompletionBlock:^{
@strongify(self);
self.ZB_beginRefreshTime = [NSDate date];
}];
}
- (void)HYD_footerRefreshingWithTarget:(id)target refreshingAction:(SEL)action {
self.mj_footer =
[MJRefreshBackNormalFooter footerWithRefreshingTarget:target
refreshingAction:action];
}
- (void)HYD_footerRefreshingBlock:(CompleteBlock)block {
self.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
BLOCK_EXEC(block);
}];
}
- (void)HYD_endRefreshing {
- (void)HYD_endRefreshing {
if ([self.mj_header isRefreshing]) {
if (!self.ZB_beginRefreshTime) {
[self.mj_header endRefreshing];
}else{
@autoreleasepool {
NSDate* toDate = [NSDate date];
NSDate* startDate = self.ZB_beginRefreshTime;
NSCalendar* chineseClendar = [ [ NSCalendar alloc ] initWithCalendarIdentifier:NSCalendarIdentifierGregorian ];
NSUInteger unitFlags = NSCalendarUnitSecond ;
NSDateComponents *cps = [ chineseClendar components:unitFlags fromDate:startDate toDate:toDate options:0];
NSInteger diffSec = [cps second];
if (diffSec < 1) {
@weakify(self);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
@strongify(self);
if([self.mj_header isRefreshing])[self.mj_header endRefreshing];
});
}else{
[self.mj_header endRefreshing];
}
}
}
}
if ([self.mj_footer isRefreshing]) {
[self.mj_footer endRefreshing];
}
}
#pragma mark - getter / setter
#pragma mark - model event
#pragma mark - view event
#pragma mark - private
- (void)configurationRefreshWithHedaer:(MJRefreshNormalHeader *)header {
//隱藏時(shí)間
header.lastUpdatedTimeLabel.hidden = YES;
self.mj_header = header;
}
#pragma mark - delegete
#pragma mark - notification
#pragma mark - kvo
@end
三丶總結(jié):
優(yōu)化app體驗(yàn);不爽就要改;