Commit 964ce0a1 authored by jaguar-bot's avatar jaguar-bot

Bump version to 0.1.5

parent 076fac84
PODS:
- GMRefresh (0.1.4):
- MJRefresh (~> 3.1.0)
- MJRefresh (3.1.0)
- MJRefresh (3.1.12)
DEPENDENCIES:
- GMRefresh (from `../`)
......@@ -12,7 +12,7 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
GMRefresh: 4a1d3332576e7a4d9be742d62fec260fd718e65d
MJRefresh: 743e6404967d1c2c688472ea3ecfde247d872db4
MJRefresh: b96cdb21c4aa75a7b07654311ab2f315c497e806
PODFILE CHECKSUM: 9e12f3fbdc35e42e007aeabb4d7a97d764319eea
......
......@@ -13,7 +13,7 @@
@property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh;
/** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
@property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用automaticallyChangeAlpha属性");
@property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用triggerAutomaticallyRefreshPercent属性");
/** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
@property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent;
......
......@@ -110,6 +110,12 @@
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self executeRefreshingCallback];
});
} else if (state == MJRefreshStateNoMoreData || state == MJRefreshStateIdle) {
if (MJRefreshStateRefreshing == oldState) {
if (self.endRefreshingCompletionBlock) {
self.endRefreshingCompletionBlock();
}
}
}
}
......
......@@ -95,6 +95,10 @@
if (self.isAutomaticallyChangeAlpha) self.alpha = 0.0;
} completion:^(BOOL finished) {
self.pullingPercent = 0.0;
if (self.endRefreshingCompletionBlock) {
self.endRefreshingCompletionBlock();
}
}];
}
......@@ -122,29 +126,19 @@
}
}
#pragma mark - 公共方法
- (void)endRefreshing
{
if ([self.scrollView isKindOfClass:[UICollectionView class]]) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[super endRefreshing];
dispatch_async(dispatch_get_main_queue(), ^{
self.state = MJRefreshStateIdle;
});
} else {
[super endRefreshing];
}
}
- (void)noticeNoMoreData
- (void)endRefreshingWithNoMoreData
{
if ([self.scrollView isKindOfClass:[UICollectionView class]]) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[super noticeNoMoreData];
dispatch_async(dispatch_get_main_queue(), ^{
self.state = MJRefreshStateNoMoreData;
});
} else {
[super noticeNoMoreData];
}
}
#pragma mark - 私有方法
#pragma mark 获得scrollView的内容 超出 view 的高度
- (CGFloat)heightForContentBreakView
......
......@@ -12,6 +12,7 @@
#import "UIView+MJExtension.h"
#import "UIScrollView+MJExtension.h"
#import "UIScrollView+MJRefresh.h"
#import "NSBundle+MJRefresh.h"
/** 刷新控件的状态 */
typedef NS_ENUM(NSInteger, MJRefreshState) {
......@@ -29,6 +30,10 @@ typedef NS_ENUM(NSInteger, MJRefreshState) {
/** 进入刷新状态的回调 */
typedef void (^MJRefreshComponentRefreshingBlock)();
/** 开始刷新后的回调(进入刷新状态后的回调) */
typedef void (^MJRefreshComponentbeginRefreshingCompletionBlock)();
/** 结束刷新后的回调 */
typedef void (^MJRefreshComponentEndRefreshingCompletionBlock)();
/** 刷新控件的基类 */
@interface MJRefreshComponent : UIView
......@@ -43,6 +48,7 @@ typedef void (^MJRefreshComponentRefreshingBlock)();
@property (copy, nonatomic) MJRefreshComponentRefreshingBlock refreshingBlock;
/** 设置回调对象和回调方法 */
- (void)setRefreshingTarget:(id)target refreshingAction:(SEL)action;
/** 回调对象 */
@property (weak, nonatomic) id refreshingTarget;
/** 回调方法 */
......@@ -53,8 +59,14 @@ typedef void (^MJRefreshComponentRefreshingBlock)();
#pragma mark - 刷新状态控制
/** 进入刷新状态 */
- (void)beginRefreshing;
- (void)beginRefreshingWithCompletionBlock:(void (^)())completionBlock;
/** 开始刷新后的回调(进入刷新状态后的回调) */
@property (copy, nonatomic) MJRefreshComponentbeginRefreshingCompletionBlock beginRefreshingCompletionBlock;
/** 结束刷新的回调 */
@property (copy, nonatomic) MJRefreshComponentEndRefreshingCompletionBlock endRefreshingCompletionBlock;
/** 结束刷新状态 */
- (void)endRefreshing;
- (void)endRefreshingWithCompletionBlock:(void (^)())completionBlock;
/** 是否正在刷新 */
- (BOOL)isRefreshing;
/** 刷新状态 一般交给子类内部实现 */
......@@ -89,5 +101,6 @@ typedef void (^MJRefreshComponentRefreshingBlock)();
@end
@interface UILabel(MJRefresh)
+ (instancetype)label;
+ (instancetype)mj_label;
- (CGFloat)mj_textWith;
@end
......@@ -9,8 +9,6 @@
#import "MJRefreshComponent.h"
#import "MJRefreshConst.h"
#import "UIView+MJExtension.h"
#import "UIScrollView+MJRefresh.h"
@interface MJRefreshComponent()
@property (strong, nonatomic) UIPanGestureRecognizer *pan;
......@@ -39,9 +37,9 @@
- (void)layoutSubviews
{
[super layoutSubviews];
[self placeSubviews];
[super layoutSubviews];
}
- (void)placeSubviews{}
......@@ -133,6 +131,16 @@
self.refreshingAction = action;
}
- (void)setState:(MJRefreshState)state
{
_state = state;
// 加入主队列的目的是等setState:方法调用完毕、设置完文字后再去布局子控件
dispatch_async(dispatch_get_main_queue(), ^{
[self setNeedsLayout];
});
}
#pragma mark 进入刷新状态
- (void)beginRefreshing
{
......@@ -144,10 +152,20 @@
if (self.window) {
self.state = MJRefreshStateRefreshing;
} else {
// 预防正在刷新中时,调用本方法使得header inset回置失败
if (self.state != MJRefreshStateRefreshing) {
self.state = MJRefreshStateWillRefresh;
// 刷新(预防从另一个控制器回到这个控制器的情况,回来要重新刷新一下)
[self setNeedsDisplay];
}
}
}
- (void)beginRefreshingWithCompletionBlock:(void (^)())completionBlock
{
self.beginRefreshingCompletionBlock = completionBlock;
[self beginRefreshing];
}
#pragma mark 结束刷新状态
......@@ -156,6 +174,13 @@
self.state = MJRefreshStateIdle;
}
- (void)endRefreshingWithCompletionBlock:(void (^)())completionBlock
{
self.endRefreshingCompletionBlock = completionBlock;
[self endRefreshing];
}
#pragma mark 是否正在刷新
- (BOOL)isRefreshing
{
......@@ -208,12 +233,15 @@
if ([self.refreshingTarget respondsToSelector:self.refreshingAction]) {
MJRefreshMsgSend(MJRefreshMsgTarget(self.refreshingTarget), self.refreshingAction, self);
}
if (self.beginRefreshingCompletionBlock) {
self.beginRefreshingCompletionBlock();
}
});
}
@end
@implementation UILabel(MJRefresh)
+ (instancetype)label
+ (instancetype)mj_label
{
UILabel *label = [[self alloc] init];
label.font = MJRefreshLabelFont;
......@@ -223,4 +251,24 @@
label.backgroundColor = [UIColor clearColor];
return label;
}
- (CGFloat)mj_textWith {
CGFloat stringWidth = 0;
CGSize size = CGSizeMake(MAXFLOAT, MAXFLOAT);
if (self.text.length > 0) {
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
stringWidth =[self.text
boundingRectWithSize:size
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:self.font}
context:nil].size.width;
#else
stringWidth = [self.text sizeWithFont:self.font
constrainedToSize:size
lineBreakMode:NSLineBreakByCharWrapping].width;
#endif
}
return stringWidth;
}
@end
\ No newline at end of file
......@@ -118,38 +118,32 @@
if (self.isAutomaticallyChangeAlpha) self.alpha = 0.0;
} completion:^(BOOL finished) {
self.pullingPercent = 0.0;
if (self.endRefreshingCompletionBlock) {
self.endRefreshingCompletionBlock();
}
}];
} else if (state == MJRefreshStateRefreshing) {
dispatch_async(dispatch_get_main_queue(), ^{
[UIView animateWithDuration:MJRefreshFastAnimationDuration animations:^{
// 增加滚动区域
CGFloat top = self.scrollViewOriginalInset.top + self.mj_h;
// 增加滚动区域top
self.scrollView.mj_insetT = top;
// 设置滚动位置
self.scrollView.mj_offsetY = - top;
[self.scrollView setContentOffset:CGPointMake(0, -top) animated:NO];
} completion:^(BOOL finished) {
[self executeRefreshingCallback];
}];
});
}
}
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
}
#pragma mark - 公共方法
- (void)endRefreshing
{
if ([self.scrollView isKindOfClass:[UICollectionView class]]) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[super endRefreshing];
dispatch_async(dispatch_get_main_queue(), ^{
self.state = MJRefreshStateIdle;
});
} else {
[super endRefreshing];
}
}
- (NSDate *)lastUpdatedTime
......
......@@ -66,6 +66,14 @@
}
#pragma mark - 实现父类的方法
- (void)prepare
{
[super prepare];
// 初始化间距
self.labelLeftInset = 20;
}
- (void)placeSubviews
{
[super placeSubviews];
......@@ -77,7 +85,7 @@
self.gifView.contentMode = UIViewContentModeCenter;
} else {
self.gifView.contentMode = UIViewContentModeRight;
self.gifView.mj_w = self.mj_w * 0.5 - 90;
self.gifView.mj_w = self.mj_w * 0.5 - self.labelLeftInset - self.stateLabel.mj_textWith * 0.5;
}
}
......
......@@ -31,7 +31,7 @@
self.loadingView = nil;
[self setNeedsLayout];
}
#pragma makr - 重写父类的方法
#pragma mark - 重写父类的方法
- (void)prepare
{
[super prepare];
......@@ -48,7 +48,7 @@
// 圈圈
CGFloat loadingCenterX = self.mj_w * 0.5;
if (!self.isRefreshingTitleHidden) {
loadingCenterX -= 100;
loadingCenterX -= self.stateLabel.mj_textWith * 0.5 + self.labelLeftInset;
}
CGFloat loadingCenterY = self.mj_h * 0.5;
self.loadingView.center = CGPointMake(loadingCenterX, loadingCenterY);
......
......@@ -9,6 +9,8 @@
#import "MJRefreshAutoFooter.h"
@interface MJRefreshAutoStateFooter : MJRefreshAutoFooter
/** 文字距离圈圈、箭头的距离 */
@property (assign, nonatomic) CGFloat labelLeftInset;
/** 显示刷新状态的label */
@property (weak, nonatomic, readonly) UILabel *stateLabel;
......
......@@ -30,7 +30,7 @@
- (UILabel *)stateLabel
{
if (!_stateLabel) {
[self addSubview:_stateLabel = [UILabel label]];
[self addSubview:_stateLabel = [UILabel mj_label]];
}
return _stateLabel;
}
......@@ -56,10 +56,13 @@
{
[super prepare];
// 初始化间距
self.labelLeftInset = MJRefreshLabelLeftInset;
// 初始化文字
[self setTitle:MJRefreshAutoFooterIdleText forState:MJRefreshStateIdle];
[self setTitle:MJRefreshAutoFooterRefreshingText forState:MJRefreshStateRefreshing];
[self setTitle:MJRefreshAutoFooterNoMoreDataText forState:MJRefreshStateNoMoreData];
[self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshAutoFooterIdleText] forState:MJRefreshStateIdle];
[self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshAutoFooterRefreshingText] forState:MJRefreshStateRefreshing];
[self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshAutoFooterNoMoreDataText] forState:MJRefreshStateNoMoreData];
// 监听label
self.stateLabel.userInteractionEnabled = YES;
......
......@@ -66,6 +66,14 @@
}
#pragma mark - 实现父类的方法
- (void)prepare
{
[super prepare];
// 初始化间距
self.labelLeftInset = 20;
}
- (void)setPullingPercent:(CGFloat)pullingPercent
{
[super setPullingPercent:pullingPercent];
......@@ -88,7 +96,7 @@
self.gifView.contentMode = UIViewContentModeCenter;
} else {
self.gifView.contentMode = UIViewContentModeRight;
self.gifView.mj_w = self.mj_w * 0.5 - 90;
self.gifView.mj_w = self.mj_w * 0.5 - self.labelLeftInset - self.stateLabel.mj_textWith * 0.5;
}
}
......
......@@ -7,6 +7,7 @@
//
#import "MJRefreshBackNormalFooter.h"
#import "NSBundle+MJRefresh.h"
@interface MJRefreshBackNormalFooter()
{
......@@ -20,8 +21,7 @@
- (UIImageView *)arrowView
{
if (!_arrowView) {
UIImage *image = [UIImage imageNamed:MJRefreshSrcName(@"arrow.png")] ?: [UIImage imageNamed:MJRefreshFrameworkSrcName(@"arrow.png")];
UIImageView *arrowView = [[UIImageView alloc] initWithImage:image];
UIImageView *arrowView = [[UIImageView alloc] initWithImage:[NSBundle mj_arrowImage]];
[self addSubview:_arrowView = arrowView];
}
return _arrowView;
......@@ -45,7 +45,7 @@
self.loadingView = nil;
[self setNeedsLayout];
}
#pragma makr - 重写父类的方法
#pragma mark - 重写父类的方法
- (void)prepare
{
[super prepare];
......@@ -60,7 +60,7 @@
// 箭头的中心点
CGFloat arrowCenterX = self.mj_w * 0.5;
if (!self.stateLabel.hidden) {
arrowCenterX -= 100;
arrowCenterX -= self.labelLeftInset + self.stateLabel.mj_textWith * 0.5;
}
CGFloat arrowCenterY = self.mj_h * 0.5;
CGPoint arrowCenter = CGPointMake(arrowCenterX, arrowCenterY);
......@@ -75,6 +75,8 @@
if (self.loadingView.constraints.count == 0) {
self.loadingView.center = arrowCenter;
}
self.arrowView.tintColor = self.stateLabel.textColor;
}
- (void)setState:(MJRefreshState)state
......
......@@ -9,6 +9,8 @@
#import "MJRefreshBackFooter.h"
@interface MJRefreshBackStateFooter : MJRefreshBackFooter
/** 文字距离圈圈、箭头的距离 */
@property (assign, nonatomic) CGFloat labelLeftInset;
/** 显示刷新状态的label */
@property (weak, nonatomic, readonly) UILabel *stateLabel;
/** 设置state状态下的文字 */
......
......@@ -30,7 +30,7 @@
- (UILabel *)stateLabel
{
if (!_stateLabel) {
[self addSubview:_stateLabel = [UILabel label]];
[self addSubview:_stateLabel = [UILabel mj_label]];
}
return _stateLabel;
}
......@@ -52,11 +52,14 @@
{
[super prepare];
// 初始化间距
self.labelLeftInset = MJRefreshLabelLeftInset;
// 初始化文字
[self setTitle:MJRefreshBackFooterIdleText forState:MJRefreshStateIdle];
[self setTitle:MJRefreshBackFooterPullingText forState:MJRefreshStatePulling];
[self setTitle:MJRefreshBackFooterRefreshingText forState:MJRefreshStateRefreshing];
[self setTitle:MJRefreshBackFooterNoMoreDataText forState:MJRefreshStateNoMoreData];
[self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterIdleText] forState:MJRefreshStateIdle];
[self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterPullingText] forState:MJRefreshStatePulling];
[self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterRefreshingText] forState:MJRefreshStateRefreshing];
[self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterNoMoreDataText] forState:MJRefreshStateNoMoreData];
}
- (void)placeSubviews
......
......@@ -66,6 +66,14 @@
}
#pragma mark - 实现父类的方法
- (void)prepare
{
[super prepare];
// 初始化间距
self.labelLeftInset = 20;
}
- (void)setPullingPercent:(CGFloat)pullingPercent
{
[super setPullingPercent:pullingPercent];
......@@ -90,7 +98,14 @@
self.gifView.contentMode = UIViewContentModeCenter;
} else {
self.gifView.contentMode = UIViewContentModeRight;
self.gifView.mj_w = self.mj_w * 0.5 - 90;
CGFloat stateWidth = self.stateLabel.mj_textWith;
CGFloat timeWidth = 0.0;
if (!self.lastUpdatedTimeLabel.hidden) {
timeWidth = self.lastUpdatedTimeLabel.mj_textWith;
}
CGFloat textWidth = MAX(stateWidth, timeWidth);
self.gifView.mj_w = self.mj_w * 0.5 - textWidth * 0.5 - self.labelLeftInset;
}
}
......
......@@ -7,6 +7,7 @@
//
#import "MJRefreshNormalHeader.h"
#import "NSBundle+MJRefresh.h"
@interface MJRefreshNormalHeader()
{
......@@ -20,8 +21,7 @@
- (UIImageView *)arrowView
{
if (!_arrowView) {
UIImage *image = [UIImage imageNamed:MJRefreshSrcName(@"arrow.png")] ?: [UIImage imageNamed:MJRefreshFrameworkSrcName(@"arrow.png")];
UIImageView *arrowView = [[UIImageView alloc] initWithImage:image];
UIImageView *arrowView = [[UIImageView alloc] initWithImage:[NSBundle mj_arrowImage]];
[self addSubview:_arrowView = arrowView];
}
return _arrowView;
......@@ -46,7 +46,7 @@
[self setNeedsLayout];
}
#pragma makr - 重写父类的方法
#pragma mark - 重写父类的方法
- (void)prepare
{
[super prepare];
......@@ -61,7 +61,13 @@
// 箭头的中心点
CGFloat arrowCenterX = self.mj_w * 0.5;
if (!self.stateLabel.hidden) {
arrowCenterX -= 100;
CGFloat stateWidth = self.stateLabel.mj_textWith;
CGFloat timeWidth = 0.0;
if (!self.lastUpdatedTimeLabel.hidden) {
timeWidth = self.lastUpdatedTimeLabel.mj_textWith;
}
CGFloat textWidth = MAX(stateWidth, timeWidth);
arrowCenterX -= textWidth / 2 + self.labelLeftInset;
}
CGFloat arrowCenterY = self.mj_h * 0.5;
CGPoint arrowCenter = CGPointMake(arrowCenterX, arrowCenterY);
......@@ -76,6 +82,8 @@
if (self.loadingView.constraints.count == 0) {
self.loadingView.center = arrowCenter;
}
self.arrowView.tintColor = self.stateLabel.textColor;
}
- (void)setState:(MJRefreshState)state
......
......@@ -16,6 +16,8 @@
@property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel;
#pragma mark - 状态相关
/** 文字距离圈圈、箭头的距离 */
@property (assign, nonatomic) CGFloat labelLeftInset;
/** 显示刷新状态的label */
@property (weak, nonatomic, readonly) UILabel *stateLabel;
/** 设置state状态下的文字 */
......
......@@ -32,7 +32,7 @@
- (UILabel *)stateLabel
{
if (!_stateLabel) {
[self addSubview:_stateLabel = [UILabel label]];
[self addSubview:_stateLabel = [UILabel mj_label]];
}
return _stateLabel;
}
......@@ -40,7 +40,7 @@
- (UILabel *)lastUpdatedTimeLabel
{
if (!_lastUpdatedTimeLabel) {
[self addSubview:_lastUpdatedTimeLabel = [UILabel label]];
[self addSubview:_lastUpdatedTimeLabel = [UILabel mj_label]];
}
return _lastUpdatedTimeLabel;
}
......@@ -86,8 +86,10 @@
// 2.格式化日期
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
BOOL isToday = NO;
if ([cmp1 day] == [cmp2 day]) { // 今天
formatter.dateFormat = @"今天 HH:mm";
formatter.dateFormat = @" HH:mm";
isToday = YES;
} else if ([cmp1 year] == [cmp2 year]) { // 今年
formatter.dateFormat = @"MM-dd HH:mm";
} else {
......@@ -96,9 +98,14 @@
NSString *time = [formatter stringFromDate:lastUpdatedTime];
// 3.显示日期
self.lastUpdatedTimeLabel.text = [NSString stringWithFormat:@"最后更新:%@", time];
self.lastUpdatedTimeLabel.text = [NSString stringWithFormat:@"%@%@%@",
[NSBundle mj_localizedStringForKey:MJRefreshHeaderLastTimeText],
isToday ? [NSBundle mj_localizedStringForKey:MJRefreshHeaderDateTodayText] : @"",
time];
} else {
self.lastUpdatedTimeLabel.text = @"最后更新:无记录";
self.lastUpdatedTimeLabel.text = [NSString stringWithFormat:@"%@%@",
[NSBundle mj_localizedStringForKey:MJRefreshHeaderLastTimeText],
[NSBundle mj_localizedStringForKey:MJRefreshHeaderNoneLastDateText]];
}
}
......@@ -107,10 +114,13 @@
{
[super prepare];
// 初始化间距
self.labelLeftInset = MJRefreshLabelLeftInset;
// 初始化文字
[self setTitle:MJRefreshHeaderIdleText forState:MJRefreshStateIdle];
[self setTitle:MJRefreshHeaderPullingText forState:MJRefreshStatePulling];
[self setTitle:MJRefreshHeaderRefreshingText forState:MJRefreshStateRefreshing];
[self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshHeaderIdleText] forState:MJRefreshStateIdle];
[self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshHeaderPullingText] forState:MJRefreshStatePulling];
[self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshHeaderRefreshingText] forState:MJRefreshStateRefreshing];
}
- (void)placeSubviews
......
......@@ -29,11 +29,8 @@
// 字体大小
#define MJRefreshLabelFont [UIFont boldSystemFontOfSize:14]
// 图片路径
#define MJRefreshSrcName(file) [@"MJRefresh.bundle" stringByAppendingPathComponent:file]
#define MJRefreshFrameworkSrcName(file) [@"Frameworks/MJRefresh.framework/MJRefresh.bundle" stringByAppendingPathComponent:file]
// 常量
UIKIT_EXTERN const CGFloat MJRefreshLabelLeftInset;
UIKIT_EXTERN const CGFloat MJRefreshHeaderHeight;
UIKIT_EXTERN const CGFloat MJRefreshFooterHeight;
UIKIT_EXTERN const CGFloat MJRefreshFastAnimationDuration;
......@@ -59,6 +56,10 @@ UIKIT_EXTERN NSString *const MJRefreshBackFooterPullingText;
UIKIT_EXTERN NSString *const MJRefreshBackFooterRefreshingText;
UIKIT_EXTERN NSString *const MJRefreshBackFooterNoMoreDataText;
UIKIT_EXTERN NSString *const MJRefreshHeaderLastTimeText;
UIKIT_EXTERN NSString *const MJRefreshHeaderDateTodayText;
UIKIT_EXTERN NSString *const MJRefreshHeaderNoneLastDateText;
// 状态检查
#define MJRefreshCheckState \
MJRefreshState oldState = self.state; \
......
......@@ -2,6 +2,7 @@
// 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
#import <UIKit/UIKit.h>
const CGFloat MJRefreshLabelLeftInset = 25;
const CGFloat MJRefreshHeaderHeight = 54.0;
const CGFloat MJRefreshFooterHeight = 44.0;
const CGFloat MJRefreshFastAnimationDuration = 0.25;
......@@ -14,15 +15,19 @@ NSString *const MJRefreshKeyPathPanState = @"state";
NSString *const MJRefreshHeaderLastUpdatedTimeKey = @"MJRefreshHeaderLastUpdatedTimeKey";
NSString *const MJRefreshHeaderIdleText = @"下拉可以刷新";
NSString *const MJRefreshHeaderPullingText = @"松开立即刷新";
NSString *const MJRefreshHeaderRefreshingText = @"正在刷新数据中...";
NSString *const MJRefreshHeaderIdleText = @"MJRefreshHeaderIdleText";
NSString *const MJRefreshHeaderPullingText = @"MJRefreshHeaderPullingText";
NSString *const MJRefreshHeaderRefreshingText = @"MJRefreshHeaderRefreshingText";
NSString *const MJRefreshAutoFooterIdleText = @"点击或上拉加载更多";
NSString *const MJRefreshAutoFooterRefreshingText = @"正在加载更多的数据...";
NSString *const MJRefreshAutoFooterNoMoreDataText = @"已经全部加载完毕";
NSString *const MJRefreshAutoFooterIdleText = @"MJRefreshAutoFooterIdleText";
NSString *const MJRefreshAutoFooterRefreshingText = @"MJRefreshAutoFooterRefreshingText";
NSString *const MJRefreshAutoFooterNoMoreDataText = @"MJRefreshAutoFooterNoMoreDataText";
NSString *const MJRefreshBackFooterIdleText = @"上拉可以加载更多";
NSString *const MJRefreshBackFooterPullingText = @"松开立即加载更多";
NSString *const MJRefreshBackFooterRefreshingText = @"正在加载更多的数据...";
NSString *const MJRefreshBackFooterNoMoreDataText = @"已经全部加载完毕";
\ No newline at end of file
NSString *const MJRefreshBackFooterIdleText = @"MJRefreshBackFooterIdleText";
NSString *const MJRefreshBackFooterPullingText = @"MJRefreshBackFooterPullingText";
NSString *const MJRefreshBackFooterRefreshingText = @"MJRefreshBackFooterRefreshingText";
NSString *const MJRefreshBackFooterNoMoreDataText = @"MJRefreshBackFooterNoMoreDataText";
NSString *const MJRefreshHeaderLastTimeText = @"MJRefreshHeaderLastTimeText";
NSString *const MJRefreshHeaderDateTodayText = @"MJRefreshHeaderDateTodayText";
NSString *const MJRefreshHeaderNoneLastDateText = @"MJRefreshHeaderNoneLastDateText";
\ No newline at end of file
......@@ -57,7 +57,7 @@ static const char MJRefreshFooterKey = '\0';
if (mj_footer != self.mj_footer) {
// 删除旧的,添加新的
[self.mj_footer removeFromSuperview];
[self addSubview:mj_footer];
[self insertSubview:mj_footer atIndex:0];
// 存储新的
[self willChangeValueForKey:@"mj_footer"]; // KVO
......
![(logo)](http://images.cnitblog.com/blog2015/497279/201505/051004492043385.png)
## MJRefresh
* An easy way to use pull-to-refresh
* 用法简单的下拉刷新框架:一行代码搞定
## Contents
* Getting Started
* [Features【支持哪些控件的刷新】](#支持哪些控件的刷新)
* [Installation【如何使用MJRefresh】](#如何使用MJRefresh)
* [Who's using【已经超过上百个App正在使用MJRefresh】](#已经超过上百个App正在使用MJRefresh)
* [Classes【MJRefresh类结构图】](#MJRefresh类结构图)
* 常见API
* [Features【Support what kinds of controls to refresh】](#Support what kinds of controls to refresh)
* [Installation【How to use MJRefresh】](#How to use MJRefresh)
* [Who's using【More than hundreds of Apps are using MJRefresh】](#>More than hundreds of Apps are using MJRefresh)
* [Classes【The Class Structure Chart of MJRefresh】](#The Class Structure Chart of MJRefresh)
* Comment API
* [MJRefreshComponent.h](#MJRefreshComponent.h)
* [MJRefreshHeader.h](#MJRefreshHeader.h)
* [MJRefreshFooter.h](#MJRefreshFooter.h)
* [MJRefreshAutoFooter.h](#MJRefreshAutoFooter.h)
* Examples
* [Reference【参考】](#参考)
* [下拉刷新01-默认](#下拉刷新01-默认)
* [下拉刷新02-动画图片](#下拉刷新02-动画图片)
* [下拉刷新03-隐藏时间](#下拉刷新03-隐藏时间)
* [下拉刷新04-隐藏状态和时间](#下拉刷新04-隐藏状态和时间)
* [下拉刷新05-自定义文字](#下拉刷新05-自定义文字)
* [下拉刷新06-自定义刷新控件](#下拉刷新06-自定义刷新控件)
* [上拉刷新01-默认](#上拉刷新01-默认)
* [上拉刷新02-动画图片](#上拉刷新02-动画图片)
* [上拉刷新03-隐藏刷新状态的文字](#上拉刷新03-隐藏刷新状态的文字)
* [上拉刷新04-全部加载完毕](#上拉刷新04-全部加载完毕)
* [上拉刷新05-自定义文字](#上拉刷新05-自定义文字)
* [上拉刷新06-加载后隐藏](#上拉刷新06-加载后隐藏)
* [上拉刷新07-自动回弹的上拉01](#上拉刷新07-自动回弹的上拉01)
* [上拉刷新08-自动回弹的上拉02](#上拉刷新08-自动回弹的上拉02)
* [上拉刷新09-自定义刷新控件(自动刷新)](#上拉刷新09-自定义刷新控件(自动刷新))
* [上拉刷新10-自定义刷新控件(自动回弹)](#上拉刷新10-自定义刷新控件(自动回弹))
* [UICollectionView01-上下拉刷新](#UICollectionView01-上下拉刷新)
* [UIWebView01-下拉刷新](#UIWebView01-下拉刷新)
* [期待](#期待)
## <a id="支持哪些控件的刷新"></a>支持哪些控件的刷新
* [Reference](#Reference)
* [The drop-down refresh 01-Default](#The drop-down refresh 01-Default)
* [The drop-down refresh 02-Animation image](#The drop-down refresh 02-Animation image)
* [The drop-down refresh 03-Hide the time](#The drop-down refresh 03-Hide the time)
* [The drop-down refresh 04-Hide status and time](#The drop-down refresh 04-Hide status and time)
* [The drop-down refresh 05-DIY title](#The drop-down refresh 05-DIY title)
* [The drop-down refresh 06-DIY the control of refresh](#The drop-down refresh 06-DIY the control of refresh)
* [The pull to refresh 01-Default](#The pull to refresh 01-Default)
* [The pull to refresh 02-Animation image](#The pull to refresh 02-Animation image)
* [The pull to refresh 03-Hide the title of refresh status](#The pull to refresh 03-Hide the title of refresh status)
* [The pull to refresh 04-All loaded](#The pull to refresh 04-All loaded)
* [The pull to refresh 05-DIY title](#The pull to refresh 05-DIY title)
* [The pull to refresh 06-Hidden After loaded](#The pull to refresh 06-Hidden After loaded)
* [The pull to refresh 07-Automatic back of the pull01](#上The pull to refresh 07-Automatic back of the pull01)
* [The pull to refresh 08-Automatic back of the pull02](#The pull to refresh 08-Automatic back of the pull02)
* [The pull to refresh 09-DIY the control of refresh(Automatic refresh)](#The pull to refresh 09-DIY the control of refresh(Automatic refresh))
* [The pull to refresh 10-DIY the control of refresh(Automatic back)](#The pull to refresh 10-DIY the control of refresh(Automatic back))
* [UICollectionView01-The pull and drop-down refresh](#UICollectionView01-The pull and drop-down refresh)
* [UIWebView01-The drop-down refresh](#UIWebView01-The drop-down refresh)
* [Hope](#Hope)
## <a id="Support what kinds of controls to refresh"></a>Support what kinds of controls to refresh
* `UIScrollView``UITableView``UICollectionView``UIWebView`
## <a id="如何使用MJRefresh"></a>如何使用MJRefresh
* cocoapods导入`pod 'MJRefresh'`
* 手动导入
* `MJRefresh`文件夹中的所有文件拽入项目中
* 导入主头文件`#import "MJRefresh.h"`
## <a id="How to use MJRefresh"></a>How to use MJRefresh
* Installation with CocoaPods`pod 'MJRefresh'`
* Manual import
* Drag All files in the `MJRefresh` folder to project
* Import the main file`#import "MJRefresh.h"`
```objc
Base Custom
......@@ -54,41 +53,42 @@ UIScrollView+MJRefresh.h UIScrollView+MJRefresh.m
UIView+MJExtension.h UIView+MJExtension.m
```
## <a id="已经超过上百个App正在使用MJRefresh"></a>已经超过上百个App正在使用MJRefresh
## <a id=">More than hundreds of Apps are using MJRefresh"></a>More than hundreds of Apps are using MJRefresh
<img src="http://images0.cnblogs.com/blog2015/497279/201506/141212365041650.png" width="200" height="300">
* 更多App信息可以关注[M了个J-博客园](http://www.cnblogs.com/mjios/p/4409853.html)
* More information of App can focus on[M了个J-博客园](http://www.cnblogs.com/mjios/p/4409853.html)
## <a id="MJRefresh类结构图"></a>MJRefresh类结构图
## <a id="The Class Structure Chart of MJRefresh"></a>The Class Structure Chart of MJRefresh
![](http://images0.cnblogs.com/blog2015/497279/201506/132232456139177.png)
- 图中`红色文字的类`:可以直接拿来用
- 下拉刷新控件的种类
- 默认(Normal)`MJRefreshNormalHeader`
- 动图(Gif)`MJRefreshGifHeader`
- 上拉刷新控件的种类
- 自动刷新(Auto)
- 默认(Normal)`MJRefreshAutoNormalFooter`
- 动图(Gif)`MJRefreshAutoGifFooter`
- 自动回弹(Back)
- 默认(Normal)`MJRefreshBackNormalFooter`
- 动图(Gif)`MJRefreshBackGifFooter`
- 图中`非红色文字的类`:拿来继承,用于自定义刷新控件
- 关于如何自定义刷新控件,可以参考下图的类<br>
- `The class of red text` in the chart:You can use them directly
- The drop-down refresh control types
- Normal`MJRefreshNormalHeader`
- Gif`MJRefreshGifHeader`
- The pull to refresh control types
- Auto refresh
- Normal`MJRefreshAutoNormalFooter`
- Gif`MJRefreshAutoGifFooter`
- Auto Back
- Normal`MJRefreshBackNormalFooter`
- Gif`MJRefreshBackGifFooter`
- `The class of non-red text` in the chart:For inheritance,to use DIY the control of refresh
- About how to DIY the control of refresh,You can refer the Class in below Chart<br>
<img src="http://images0.cnblogs.com/blog2015/497279/201506/141358159107893.png" width="30%" height="30%">
## <a id="MJRefreshComponent.h"></a>MJRefreshComponent.h
```objc
/** 刷新控件的基类 */
/** The Base Class of refresh control */
@interface MJRefreshComponent : UIView
#pragma mark - 刷新状态控制
/** 进入刷新状态 */
#pragma mark - Control the state of Refresh
/** BeginRefreshing */
- (void)beginRefreshing;
/** 结束刷新状态 */
/** EndRefreshing */
- (void)endRefreshing;
/** 是否正在刷新 */
/** IsRefreshing */
- (BOOL)isRefreshing;
#pragma mark - 其他
/** 根据拖拽比例自动切换透明度 */
#pragma mark - Other
/** According to the drag ratio to change alpha automatically */
@property (assign, nonatomic, getter=isAutomaticallyChangeAlpha) BOOL automaticallyChangeAlpha;
@end
```
......@@ -96,17 +96,17 @@ UIView+MJExtension.h UIView+MJExtension.m
## <a id="MJRefreshHeader.h"></a>MJRefreshHeader.h
```objc
@interface MJRefreshHeader : MJRefreshComponent
/** 创建header */
/** Creat header */
+ (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
/** 创建header */
/** Creat header */
+ (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
/** 这个key用来存储上一次下拉刷新成功的时间 */
/** This key is used to storage the time that the last time of drown-down successfully */
@property (copy, nonatomic) NSString *lastUpdatedTimeKey;
/** 上一次下拉刷新成功的时间 */
/** The last time of drown-down successfully */
@property (strong, nonatomic, readonly) NSDate *lastUpdatedTime;
/** 忽略多少scrollView的contentInset的top */
/** Ignored scrollView contentInset top */
@property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop;
@end
```
......@@ -114,20 +114,20 @@ UIView+MJExtension.h UIView+MJExtension.m
## <a id="MJRefreshFooter.h"></a>MJRefreshFooter.h
```objc
@interface MJRefreshFooter : MJRefreshComponent
/** 创建footer */
/** Creat footer */
+ (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
/** 创建footer */
/** Creat footer */
+ (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
/** 提示没有更多的数据 */
- (void)endRefreshingWithNoMoreData;
/** 重置没有更多的数据(消除没有更多数据的状态) */
/** NoticeNoMoreData */
- (void)noticeNoMoreData;
/** ResetNoMoreData(Clear the status of NoMoreData ) */
- (void)resetNoMoreData;
/** 忽略多少scrollView的contentInset的bottom */
/** Ignored scrollView contentInset bottom */
@property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom;
/** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏) */
/** Automaticlly show or hidden by the count of data(Show-have data,Hidden- no data) */
@property (assign, nonatomic) BOOL automaticallyHidden;
@end
```
......@@ -135,224 +135,228 @@ UIView+MJExtension.h UIView+MJExtension.m
## <a id="MJRefreshAutoFooter.h"></a>MJRefreshAutoFooter.h
```objc
@interface MJRefreshAutoFooter : MJRefreshFooter
/** 是否自动刷新(默认为YES) */
/** Is Automatically Refresh(Default is Yes) */
@property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh;
/** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
/** When there is much at the bottom of the control is automatically refresh(Default is 1.0,Is at the bottom of the control appears in full, will refresh automatically) */
@property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent;
@end
```
## <a id="参考"></a>参考
## <a id="Reference"></a>Reference
```objc
* 由于这个框架的功能较多,就不写具体文字描述其用法
* 大家可以直接参考示例中的MJTableViewControllerMJCollectionViewControllerMJWebViewController,更为直观快速
* Due to there are more functions of this frameworkDon't write specific text describe its usage
* You can directly reference examples MJTableViewControllerMJCollectionViewControllerMJWebViewControllerMore intuitive and fast.
```
<img src="http://images0.cnblogs.com/blog2015/497279/201506/141345470048120.png" width="30%" height="30%">
## <a id="下拉刷新01-默认"></a>下拉刷新01-默认
## <a id="The drop-down refresh 01-Default"></a>The drop-down refresh 01-Default
```objc
self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
// 进入刷新状态后会自动调用这个block
//Call this Block When enter the refresh status automatically
}];
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法
// Set the callback(Once you enter the refresh status,then call the action of target,that is call [self loadNewData]
self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 马上进入刷新状态
// Enter the refresh status immediately
[self.tableView.header beginRefreshing];
```
![(下拉刷新01-普通)](http://images0.cnblogs.com/blog2015/497279/201506/141204343486151.gif)
## <a id="下拉刷新02-动画图片"></a>下拉刷新02-动画图片
## <a id="The drop-down refresh 02-Animation image"></a>The drop-down refresh 02-Animation image
```objc
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法
// Set the callback(一Once you enter the refresh status,then call the action of target,that is call [self loadNewData]
MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 设置普通状态的动画图片
// Set the ordinary state of animated images
[header setImages:idleImages forState:MJRefreshStateIdle];
// 设置即将刷新状态的动画图片(一松开就会刷新的状态
// Set the pulling state of animated images(Enter the status of refreshing as soon as loosen
[header setImages:pullingImages forState:MJRefreshStatePulling];
// 设置正在刷新状态的动画图片
// Set the refreshing state of animated images
[header setImages:refreshingImages forState:MJRefreshStateRefreshing];
// 设置header
// Set header
self.tableView.mj_header = header;
```
![(下拉刷新02-动画图片)](http://images0.cnblogs.com/blog2015/497279/201506/141204402238389.gif)
## <a id="下拉刷新03-隐藏时间"></a>下拉刷新03-隐藏时间
## <a id="The drop-down refresh 03-Hide the time"></a>The drop-down refresh 03-Hide the time
```objc
// 隐藏时间
// Hide the time
header.lastUpdatedTimeLabel.hidden = YES;
```
![(下拉刷新03-隐藏时间)](http://images0.cnblogs.com/blog2015/497279/201506/141204456132944.gif)
## <a id="下拉刷新04-隐藏状态和时间"></a>下拉刷新04-隐藏状态和时间
## <a id="The drop-down refresh 04-Hide status and time"></a>The drop-down refresh 04-Hide status and time
```objc
// 隐藏时间
// Hide the time
header.lastUpdatedTimeLabel.hidden = YES;
// 隐藏状态
// Hide the status
header.stateLabel.hidden = YES;
```
![(下拉刷新04-隐藏状态和时间0)](http://images0.cnblogs.com/blog2015/497279/201506/141204508639539.gif)
## <a id="下拉刷新05-自定义文字"></a>下拉刷新05-自定义文字
## <a id="The drop-down refresh 05-DIY title"></a>The drop-down refresh 05-DIY title
```objc
// 设置文字
// Set title
[header setTitle:@"Pull down to refresh" forState:MJRefreshStateIdle];
[header setTitle:@"Release to refresh" forState:MJRefreshStatePulling];
[header setTitle:@"Loading ..." forState:MJRefreshStateRefreshing];
// 设置字体
// Set font
header.stateLabel.font = [UIFont systemFontOfSize:15];
header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:14];
// 设置颜色
// Set textColor
header.stateLabel.textColor = [UIColor redColor];
header.lastUpdatedTimeLabel.textColor = [UIColor blueColor];
```
![(下拉刷新05-自定义文字)](http://images0.cnblogs.com/blog2015/497279/201506/141204563633593.gif)
## <a id="下拉刷新06-自定义刷新控件"></a>下拉刷新06-自定义刷新控件
## <a id="The drop-down refresh 06-DIY the control of refresh"></a>The drop-down refresh 06-DIY the control of refresh
```objc
self.tableView.mj_header = [MJDIYHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 具体实现参考MJDIYHeader.h和MJDIYHeader.m
// Implementation reference to MJDIYHeader.h和MJDIYHeader.m
```
![(下拉刷新06-自定义刷新控件)](http://images0.cnblogs.com/blog2015/497279/201506/141205019261159.gif)
## <a id="上拉刷新01-默认"></a>上拉刷新01-默认
## <a id="The pull to refresh 01-Default"></a>The pull to refresh 01-Default
```objc
self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
// 进入刷新状态后会自动调用这个block
//Call this Block When enter the refresh status automatically
}];
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法
// Set the callback(Once you enter the refresh status,then call the action of target,that is call [self loadMoreData]
self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
```
![(上拉刷新01-默认)](http://images0.cnblogs.com/blog2015/497279/201506/141205090047696.gif)
## <a id="上拉刷新02-动画图片"></a>上拉刷新02-动画图片
## <a id="The pull to refresh 02-Animation image"></a>The pull to refresh 02-Animation image
```objc
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法
// Set the callback(Once you enter the refresh status,then call the action of target,that is call [self loadMoreData]
MJRefreshAutoGifFooter *footer = [MJRefreshAutoGifFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
// 设置刷新图片
// Set the refresh image
[footer setImages:refreshingImages forState:MJRefreshStateRefreshing];
// 设置尾部
// Set footer
self.tableView.mj_footer = footer;
```
![(上拉刷新02-动画图片)](http://images0.cnblogs.com/blog2015/497279/201506/141205141445793.gif)
## <a id="上拉刷新03-隐藏刷新状态的文字"></a>上拉刷新03-隐藏刷新状态的文字
## <a id="The pull to refresh 03-Hide the title of refresh status"></a>The pull to refresh 03-Hide the title of refresh status
```objc
// 隐藏刷新状态的文字
// Hide the title of refresh status
footer.refreshingTitleHidden = YES;
// 如果没有上面的方法,就用footer.stateLabel.hidden = YES;
// If does have not above method,then use footer.stateLabel.hidden = YES;
```
![(上拉刷新03-隐藏刷新状态的文字)](http://images0.cnblogs.com/blog2015/497279/201506/141205200985774.gif)
## <a id="上拉刷新04-全部加载完毕"></a>上拉刷新04-全部加载完毕
## <a id="The pull to refresh 04-All loaded"></a>The pull to refresh 04-All loaded
```objc
// 变为没有更多数据的状态
[footer endRefreshingWithNoMoreData];
//Become the status of NoMoreData
[footer noticeNoMoreData];
```
![(上拉刷新04-全部加载完毕)](http://images0.cnblogs.com/blog2015/497279/201506/141205248634686.gif)
## <a id="上拉刷新05-自定义文字"></a>上拉刷新05-自定义文字
## <a id="The pull to refresh 05-DIY title"></a>The pull to refresh 05-DIY title
```objc
// 设置文字
// Set title
[footer setTitle:@"Click or drag up to refresh" forState:MJRefreshStateIdle];
[footer setTitle:@"Loading more ..." forState:MJRefreshStateRefreshing];
[footer setTitle:@"No more data" forState:MJRefreshStateNoMoreData];
// 设置字体
// Set font
footer.stateLabel.font = [UIFont systemFontOfSize:17];
// 设置颜色
// Set textColor
footer.stateLabel.textColor = [UIColor blueColor];
```
![(上拉刷新05-自定义文字)](http://images0.cnblogs.com/blog2015/497279/201506/141205295511153.gif)
## <a id="上拉刷新06-加载后隐藏"></a>上拉刷新06-加载后隐藏
## <a id="The pull to refresh 06-Hidden After loaded"></a>The pull to refresh 06-Hidden After loaded
```objc
// 隐藏当前的上拉刷新控件
//Hidden current control of the pull to refresh
self.tableView.mj_footer.hidden = YES;
```
![(上拉刷新06-加载后隐藏)](http://images0.cnblogs.com/blog2015/497279/201506/141205343481821.gif)
## <a id="上拉刷新07-自动回弹的上拉01"></a>上拉刷新07-自动回弹的上拉01
## <a id="The pull to refresh 07-Automatic back of the pull01"></a>The pull to refresh 07-Automatic back of the pull01
```objc
self.tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
```
![(上拉刷新07-自动回弹的上拉01)](http://images0.cnblogs.com/blog2015/497279/201506/141205392239231.gif)
## <a id="上拉刷新08-自动回弹的上拉02"></a>上拉刷新08-自动回弹的上拉02
## <a id="The pull to refresh 08-Automatic back of the pull02"></a>The pull to refresh 08-Automatic back of the pull02
```objc
MJRefreshBackGifFooter *footer = [MJRefreshBackGifFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
// 设置普通状态的动画图片
// Set the normal state of the animated image
[footer setImages:idleImages forState:MJRefreshStateIdle];
// 设置即将刷新状态的动画图片(一松开就会刷新的状态
// Set the pulling state of animated images(Enter the status of refreshing as soon as loosen
[footer setImages:pullingImages forState:MJRefreshStatePulling];
// 设置正在刷新状态的动画图片
// Set the refreshing state of animated images
[footer setImages:refreshingImages forState:MJRefreshStateRefreshing];
// 设置尾部
// Set footer
self.tableView.mj_footer = footer;
```
![(上拉刷新07-自动回弹的上拉02)](http://images0.cnblogs.com/blog2015/497279/201506/141205441443628.gif)
## <a id="上拉刷新09-自定义刷新控件(自动刷新)"></a>上拉刷新09-自定义刷新控件(自动刷新)
## <a id="The pull to refresh 09-DIY the control of refresh(Automatic refresh)"></a>The pull to refresh 09-DIY the control of refresh(Automatic refresh)
```objc
self.tableView.mj_footer = [MJDIYAutoFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
// 具体实现参考MJDIYAutoFooter.h和MJDIYAutoFooter.m
// Implementation reference to MJDIYAutoFooter.h和MJDIYAutoFooter.m
```
![(上拉刷新09-自定义刷新控件(自动刷新))](http://images0.cnblogs.com/blog2015/497279/201506/141205500195866.gif)
## <a id="上拉刷新10-自定义刷新控件(自动回弹)"></a>上拉刷新10-自定义刷新控件(自动回弹)
## <a id="The pull to refresh 10-DIY the control of refresh(Automatic back)"></a>The pull to refresh 10-DIY the control of refresh(Automatic back)
```objc
self.tableView.mj_footer = [MJDIYBackFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
// 具体实现参考MJDIYBackFooter.h和MJDIYBackFooter.m
// Implementation reference to MJDIYBackFooter.h和MJDIYBackFooter.m
```
![(上拉刷新10-自定义刷新控件(自动回弹))](http://images0.cnblogs.com/blog2015/497279/201506/141205560666819.gif)
## <a id="UICollectionView01-上下拉刷新"></a>UICollectionView01-上下拉刷新
## <a id="UICollectionView01-The pull and drop-down refresh"></a>UICollectionView01-The pull and drop-down refresh
```objc
// 下拉刷新
// The drop-down refresh
self.collectionView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
// 进入刷新状态后会自动调用这个block
//Call this Block When enter the refresh status automatically
}];
// 上拉刷新
// The pull to refresh
self.collectionView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
// 进入刷新状态后会自动调用这个block
//Call this Block When enter the refresh status automatically
}];
```
![(UICollectionView01-上下拉刷新)](http://images0.cnblogs.com/blog2015/497279/201506/141206021603758.gif)
## <a id="UIWebView01-下拉刷新"></a>UIWebView01-下拉刷新
## <a id="UIWebView01-The drop-down refresh"></a>UIWebView01-The drop-down refresh
```objc
// 添加下拉刷新控件
//Add the control of The drop-down refresh
self.webView.scrollView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
// 进入刷新状态后会自动调用这个block
//Call this Block When enter the refresh status automatically
}];
```
![(UICollectionView01-上下拉刷新)](http://images0.cnblogs.com/blog2015/497279/201506/141206080514524.gif)
## 提醒
* 本框架纯ARC,兼容的系统>=iOS6.0、iPhone\iPad横竖屏
## <a id="期待"></a>期待
* 如果在使用过程中遇到BUG,希望你能Issues我,谢谢(或者尝试下载最新的框架代码看看BUG修复没有)
* 如果在使用过程中发现功能不够用,希望你能Issues我,我非常想为这个框架增加更多好用的功能,谢谢
* 如果你想为MJRefresh输出代码,请拼命Pull Requests我
* 如果你开发的应用中用到了MJRefresh,希望你能到[CocoaControls](https://www.cocoacontrols.com/controls/mjrefresh)添加你应用的iTunes路径,我将会安装使用你的应用,并且根据众多应用的使用情况,对MJRefresh进行一个更好的设计和完善,提供更多好用的功能,谢谢
* 步骤01(微信是举个例子,百度“你的应用名称 itunes”)
## Remind
* ARC
* iOS>=6.0
* iPhone \ iPad screen anyway
## <a id="Hope"></a>Hope
* If you find bug when used,Hope you can Issues me,Thank you or try to download the latest code of this framework to see the BUG has been fixed or not)
* If you find the function is not enough when used,Hope you can Issues me,I very much to add more useful function to this framework ,Thank you !
* If you want to contribute code for MJRefresh,please Pull Requests me
* If you use MJRefresh in your develop app,Hope you can go to[CocoaControls](https://www.cocoacontrols.com/controls/mjrefresh)to add the iTunes path
of you app,I Will install your app,and according to the usage of many app,to be a better design and improve to MJRefresh,Thank you !
* StepO1(WeChat is just an Example,Explore“Your app name itunes”)
![(step01)](http://ww4.sinaimg.cn/mw1024/800cdf9ctw1eq0viiv5rsj20sm0ea41t.jpg)
* 步骤02
* StepO2
![(step02)](http://ww2.sinaimg.cn/mw1024/800cdf9ctw1eq0vilejxlj20tu0me7a0.jpg)
* 步骤03
* StepO3
![(step03)](http://ww1.sinaimg.cn/mw1024/800cdf9ctw1eq0viocpo5j20wc0dc0un.jpg)
* 步骤04
* StepO4
![(step04)](http://ww3.sinaimg.cn/mw1024/800cdf9ctw1eq0vir137xj20si0gewgu.jpg)
PODS:
- GMRefresh (0.1.4):
- MJRefresh (~> 3.1.0)
- MJRefresh (3.1.0)
- MJRefresh (3.1.12)
DEPENDENCIES:
- GMRefresh (from `../`)
......@@ -12,7 +12,7 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
GMRefresh: 4a1d3332576e7a4d9be742d62fec260fd718e65d
MJRefresh: 743e6404967d1c2c688472ea3ecfde247d872db4
MJRefresh: b96cdb21c4aa75a7b07654311ab2f315c497e806
PODFILE CHECKSUM: 9e12f3fbdc35e42e007aeabb4d7a97d764319eea
......
......@@ -7,102 +7,104 @@
objects = {
/* Begin PBXBuildFile section */
023F241B232818691CBC1FAF192E33A6 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 395549386F79EB6FD33EB7CA1A017306 /* MJRefreshBackStateFooter.m */; };
0F4C4FA17D58E77292088235EB90F462 /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 85CF3F719C396276EA79BD4A0F0C94F7 /* MJRefreshStateHeader.m */; };
09A44BD18F709EB03E8048FA4FD3FC74 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = A65AF0DDBD5843EF6BE10063EC1DE255 /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
0E5DF681C27BBEB988CF0A47C5B6955D /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B304E94B68629B5F7DCEEE72885DA524 /* MJRefresh-dummy.m */; };
0E7CEDB72A958FFB94D83ABB1DBE3FB9 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = E6643DEB2913C3EFD0B2310908C6B17D /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; };
0FFDAA8C4A3ED50CE5F952C96B1AB9B6 /* pullLoading18@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D5AAA5ECA575BD194E8E90E319EFB096 /* pullLoading18@2x.png */; };
128EE63B035BD635D85DA051C639B442 /* pullLoading7@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C2727AA066D7039BF2FFBA3BF00B862F /* pullLoading7@2x.png */; };
1CF2707C1D737E55698F5264F718A768 /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = E873525AA0FB861237C838DA238EFCD2 /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; };
156985AFA17FDB59890B43A487D16776 /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C7F9AE22051BDBE67493DD290EC5FD9 /* MJRefreshNormalHeader.m */; };
194048A2CC82D6D5C21E22C07842422A /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = AD80BC1238C1F025946C78EA689F9FD6 /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; };
1F5F050F3DDBE8CD7D8084309C3AA4C1 /* GMRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 288649ECA7EFDED6AAA1133FB129A198 /* GMRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
21727EF0E8B8AEEC6B6047BBB724D919 /* MJRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 62DDF7DD452A6F068492888C8511FE1D /* MJRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
21FEF49459C186A9B3018E3387A6FC23 /* pullLoading9@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = A426C6202DFE1C777BE4EAB1FF69090E /* pullLoading9@3x.png */; };
225F6597697CED4D988A17BB87202938 /* pullLoading20@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F6C210C6125F3FD894144251FC7E5FAD /* pullLoading20@2x.png */; };
24E33CCFFFF8B80B2725EC935B4A5FDD /* pullLoading3@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1C2AA92DD72AE2CB80E053D969530BFD /* pullLoading3@2x.png */; };
29991CAE9743B20DE43C1FA5615DADE6 /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 89E7FFE3499454CF2099186410BBF06F /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
2A525C3BE695E8D9121C7D45CDCA9D26 /* pullLoading8@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1FF8AD485363277C1C02F6AA455C22C0 /* pullLoading8@3x.png */; };
2E19B48752AE9E63319ABD67EBBF2BE0 /* pullLoading13@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 42E4E62A32738F005A022565D1AFE5DE /* pullLoading13@2x.png */; };
2FB4BC978985B00E0F890DA91AF4122D /* pullLoading16@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = E0ED9E87EF4214FC4F33251D2A4828EB /* pullLoading16@3x.png */; };
2FCD07CBFD6AE6015631B2FA47CA4DBD /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = AF3AFEA26B0412278EF308461890A6D2 /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
31397700EB4340984A72D6D5469CA8DE /* pullLoading10@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4F5A5B634CA33B1698A2E5CF8D631818 /* pullLoading10@2x.png */; };
34023F3C33F7C70F8A521DCDEB873DA5 /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 25E1B990CE4C4CD728A278B17E09A203 /* MJRefreshFooter.m */; };
35FB26A3BA1B768CA410E57045732B97 /* GMRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D7C2452D40999EB5A6CC44820A790D7 /* GMRefresh-dummy.m */; };
3AD3AEAE022D2F9AB21B42D26C9E62A7 /* Pods-GMRefresh_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 13A8DE10834533B083980286DD34607D /* Pods-GMRefresh_Example-dummy.m */; };
3AD63E35A63D96E9AE8EBBD23EF9A7E2 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = E7464DB0CDE518F947518FA7F249C5D2 /* UIView+MJExtension.m */; };
3C7B68363E2BC8FFB79823A0EDEF2401 /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = CD7796E0B84D08F3954CB2285480571B /* MJRefreshStateHeader.m */; };
3D5AFA7A3E006AFC34E7C7B225CF89EA /* pullLoading13@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = EB99F0939D7EEAD78EAEC85050947FFF /* pullLoading13@3x.png */; };
3E5032FC9CA03AA1122C7A129E9536D0 /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = CD0799BB500F75019954F20434A4457B /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; };
3ED24A5CEF9F658913A04DFEF1540927 /* pullLoading8@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F69C93C15F180D64A2909597A017853F /* pullLoading8@2x.png */; };
3F3B1CBFBD48FB7DE8FC3E40B29E0B93 /* pullLoading10@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4D24951203305358B8BAF7B29607F4D3 /* pullLoading10@3x.png */; };
3F96CB1BAB131B3A9C2E09646B8D7BA9 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = ACD7FA76704BCF87D337793B471C5792 /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
402E8ECEECC30B1B25130CC420ECD010 /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 871362D3621338D922F3345EFF3BEBF7 /* MJRefreshGifHeader.m */; };
4711B4ADEF7BF066B46A5CD8A1662965 /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = AFAEDBF383DDEE31321D2212F61614CE /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; };
49DD1890430A86FA6D7387441387C900 /* GMRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = CF8D03690E3F8241A0C0B7B875F22C1E /* GMRefreshFooter.m */; };
4A092FC468E9A5880064C2AAAB037B15 /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = E9FF982FEAE665E04F9299B972D48C9C /* MJRefreshNormalHeader.m */; };
4A2CDD76C828AD59230D3C0EACABC96F /* pullLoading1@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E368356604CF10F8AAD7EE433BD0C827 /* pullLoading1@2x.png */; };
4AA08BD34A2CD4DB3DB6FB20B467486E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0DB34F35BDC86CAD77512DD8D95666F3 /* Foundation.framework */; };
4B568CCA459EB125E42A26CA942AD518 /* pullLoading15@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = FE61357185D9334BFF0CDD0B07D7E93B /* pullLoading15@3x.png */; };
4CFBEFAA832D0AB7D0E31485CF75152A /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 048976C2EDA0818EFEC9CA01BBB880C6 /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; };
5009C221C2D07C6F6642E5AC44239DBC /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = E3150750AF3E7DB5F86EAE6AC7189E5C /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
4F15DABAF433108DA0D76BB51E688875 /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 772828D7C1B5EC016F2A391EE2153D58 /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
51CD4ED8713AA68EA151B8695B8669AD /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 2970467A63AAFA0B9F669E070084CED3 /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; };
53C361E8E3983255F7302F5A4D02477D /* pullLoading5@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4F4E33AD35470F05875A4D46249821AC /* pullLoading5@2x.png */; };
53D9C5ED4219C3CFBC1837BD6D2B8BFE /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = D3494A5480373FC3C9BDB523B7E08DB9 /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; };
551BF0C86E61595CF843CB7FCC99C76E /* MJRefresh.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82183AC086CC04F7C2B2F83F402DEA80 /* MJRefresh.framework */; };
577A78DF2D4C2CE8348F23B768B48ADD /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FF9F7454D6F6BFD295023CF64ADB47E /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
57AA38B2746621571F0AD9409AF6B433 /* GMRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = FFE4F7E92C894D18E45BCFAD8F891B4C /* GMRefreshHeader.m */; };
5C3DA1A336D6C039E6ED9659292897D7 /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 54D5E66C4CB784F4E5E304401E1580EA /* MJRefreshBackGifFooter.m */; };
5D31826D5ABFB121E49E26162CA8B3DC /* pullLoading20@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 45BD2B08D2F3B0A8826836729503DD4B /* pullLoading20@3x.png */; };
5F6C7D923DDB78CF8D051FCE41DBE580 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 7729C1A343E3D513F79A0DC39B78CCB5 /* MJRefreshComponent.m */; };
60850F32D5160051EDF6E38E5F8BAC66 /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = A08D8BC4A0BF4E0CF529ECE95F92D07B /* MJRefreshHeader.m */; };
6036B13FFB8A557C9C0FEC7334381FC6 /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = D8958DD64D4F8B06313515F077270881 /* MJRefreshConst.m */; };
60FBC76762B035B3FCD31B2C04FC7339 /* pullLoading12@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6B34906F6C59E69783E189EAF8B283EA /* pullLoading12@2x.png */; };
61D9E900AA0AB8A046642D7E23D616C2 /* pullLoading4@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F80206AE99E13A1525DF415A60A84125 /* pullLoading4@3x.png */; };
63D3B71C229C44272E5C9A9EB4FB0B82 /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D88BEDD1B5B89A24603DEEDA27376E2 /* MJRefreshHeader.m */; };
6D4251B1C1D0ACF97D4313EAE8C1EBB9 /* pullLoading6@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 81821DE75DF7C24810847A261D6FEB8F /* pullLoading6@2x.png */; };
6F638EFCB75C3B0AC0D2BA098C93D532 /* pullLoading14@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4C74133EC32B59B322722897FCCD8EB8 /* pullLoading14@3x.png */; };
703BF92772BEA0646364DF8F3E7E1F46 /* pullLoading11@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 127B1D0F0701DB4651EC7D0E81301635 /* pullLoading11@3x.png */; };
7606951AB6AAE0AD806FB19F57C04EEA /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 016240BD7E8C3C8E5FD502EE938216AC /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; };
795253A481638D981A1F05B434FFD2D5 /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = DD11A5CA22C6B46244083F06D982BA43 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
797C683FC1F083780ED4B8C4D8AF9D5D /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 59B7A716061F6B9BB6471A49CF0708DB /* MJRefresh-dummy.m */; };
76CC185F9BB2CD7A65FDA3F2044BBC8A /* MJRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DA630157576572B41710891D8A57CB3 /* MJRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
77320B703D5D169BABB7CDDDF240D445 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EF1CC5B1CE4B106461CE38F0B1BAAC9 /* UIView+MJExtension.m */; };
7E347329E4C04076BC52F123DA0C990D /* GMRefreshConstant.h in Headers */ = {isa = PBXBuildFile; fileRef = D2AC591A3B378D87601D176B5BB26FF8 /* GMRefreshConstant.h */; settings = {ATTRIBUTES = (Public, ); }; };
8097EA12F1BA7F508BFF2FBB96D44271 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = EA084012D090F8DD02E82029C7D2F723 /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
80DAF09BD53F9CED16DCF5F3AE302D39 /* pullLoading16@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C2029A789F562C62DB7B58501323D750 /* pullLoading16@2x.png */; };
8108D322B3A9C261DD2A45BCE6E9E42E /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 643756566ABB3A31D2DD8FA24C9F1175 /* MJRefreshAutoFooter.m */; };
8187C35C0BDBD268BE1CD1BD7A3B2E82 /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 6729F43CED6E36C49961CB944299E3A2 /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; };
8CC8C2B0FCEC7EC16E5B55C7F50E604C /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 9752DC74BC15ECD7809435235E94EEB5 /* UIScrollView+MJRefresh.m */; };
907CB4B55D245E93E0C541A2BE0293E5 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 15837E25585428607CE5AC572836EE5D /* MJRefreshAutoStateFooter.m */; };
84F374B10C6C1F6DA424D7F3A5353F59 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = B572762D25AE884A6E6025CD584CA279 /* UIScrollView+MJExtension.m */; };
8B2C58058D3C83FD034618E6CEA5B116 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = E6152B094EC2308994892CDDA977AECA /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
8FFB4A3F811DF5B59628B51073EC829B /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 23F9717796B8BB5A0C18C41CD9A84856 /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; };
921DFD22FEF7BA53C18D4839FDDB855C /* pullLoading18@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5DDE8547E589E52BEA89A57C9E23C2B2 /* pullLoading18@3x.png */; };
9302B9507AA44C007E290A9BE3D9F63E /* pullLoading14@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 97FC1472A0B136834A60A3ECA08212C2 /* pullLoading14@2x.png */; };
932F77B143BA898328DD8591F2593880 /* Pods-GMRefresh_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EC9A078E363D9EB755D5F4555A94B84 /* Pods-GMRefresh_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
93CB184422505F167F771B3EA512628A /* pullLoading17@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 074388FFA7261AC4C91045DC07E040FB /* pullLoading17@3x.png */; };
958F4E479AA1074880BE8BB0D7C010C0 /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 5F173BEB68548D2B27EC5A2012B3637C /* MJRefresh.bundle */; };
93D8AC2B32D6EEB95E7E11F5CE281C2E /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E087BFF5A4C96024394F46FAB373F0 /* MJRefreshBackGifFooter.m */; };
958F4E479AA1074880BE8BB0D7C010C0 /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 304CC5D3C2AF74487F5E51E2BD351C87 /* MJRefresh.bundle */; };
96741EB0E7A1D44FCB4DAC65858EC6A1 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 31FF1A0FB915D51EBFBE9B0C0D45453B /* MJRefreshBackNormalFooter.m */; };
98D6C2AD90448A3F619A1E87E8511189 /* pullLoading5@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = FC4887E492494F321BB21A501D791E75 /* pullLoading5@3x.png */; };
9D0DE9D174AED89079B0D1E275B6C909 /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 95959F04C94DDA65B9FFB6C650CFFA32 /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; };
9E244A4CB70E9555C699E509BF419493 /* pullLoading2@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = C25F97CF99D16466A1195A66184C1ACA /* pullLoading2@3x.png */; };
9F3ADE7A1E814EDBC9DF05347B13DC3E /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 12D8D2B7DE72D4468D8F1D9160A45CA4 /* MJRefreshFooter.m */; };
A325DBD9CF363AA93C7B55344C3945A0 /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 246DE43CB9B220B8A6805010CDDF1A31 /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; };
A49499FFADF3D4C401DBDADF527600FD /* pullLoading9@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AC53478280ADE2A7DD4422106AA680A1 /* pullLoading9@2x.png */; };
A71E43FE8150737D7988A49E912F74D1 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B46713227C7FBB5C72F8AEC5E41FE49 /* UIScrollView+MJExtension.m */; };
A779B3E3F642D6698DD58EAE203D640B /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = F766F30D149028F931E4B9ADC05B9F34 /* MJRefreshBackNormalFooter.m */; };
A807161F473709CDF4DE350DCA4EF1A4 /* NSBundle+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 399AAF1C3C81270C477811E90BCD5614 /* NSBundle+MJRefresh.m */; };
A8D28FFD0EB1EB4EDCCA0434D87D88B4 /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = C462EB7C5A1BFAAAA88A2A69302D6D0D /* MJRefreshAutoGifFooter.m */; };
A938C5D826935FF242F78E221D0D743D /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CD495E243B865555CCA84971329BB72 /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; };
AB76B852B8A80119CEB19E8CC8D23828 /* NSBundle+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = F1604E7B9DB88EF0843279A3CF2928F5 /* NSBundle+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; };
ABF795102525AB5B23CE247A6AF2A321 /* pullLoading3@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3EE1492D00BFD7872B2CBE267077E57C /* pullLoading3@3x.png */; };
ACCFA8119B411110ECF3B896E088A4D6 /* pullLoading4@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CF92C740883CA1980DD4DB8140101BA /* pullLoading4@2x.png */; };
AD85207EB0617301A90D35C289CE5901 /* pullLoading12@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8C1FEB34B7F278365E95E34DEE63E0E3 /* pullLoading12@3x.png */; };
AEA06CC5B940EF036DCE93BF4886E3A3 /* GMRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 86A21E24A347B4A063D66C8F7EAC8FAD /* GMRefresh.bundle */; };
AFD9207194A1040926B464F5BEE37AAB /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 328E0EFC5658C0CB74EB1EE23D3CE6C2 /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; };
B610189264ADDF46372A20F56795EFD2 /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 85DBD653F2D083BF866FD821BDED8FE0 /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
B73553EFEE825D5F4E164D5ECAAA64D4 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = D9FE37D6C27365FC5DB7076DB6A5080B /* MJRefreshComponent.m */; };
B7F67545D15B202C2AC1290D5E66740F /* GMRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 310B7AD4E2B28A6B31E47B7EEE018CC9 /* GMRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; };
BC4AD1FE1B5E6909658B90F983C2E8C5 /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = BBB368BE19FB542443FF89AD24B51D3B /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
BC981395367DE6C3F226E7C68947AD37 /* pullLoading11@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F53FCF4D1E7876A0344D01B39E3864CD /* pullLoading11@2x.png */; };
BF6940D649C8117B7F1FBD47DC70F0EF /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = D5CCB235447F3E18360C0DAB5E88F117 /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; };
BF7B2EB753C395B0B823343A583D56F2 /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 28D452368B1E23E34CF464E99127DB84 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
C2985026E44A35D37B114E7F2BAC18DD /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D6CA0A599AA99D8D4849BE6F09120B4 /* MJRefreshAutoFooter.m */; };
C45539CE8959A9252562AC9D32B15C24 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 22423C0D9752CE12BC99436DC3E8D200 /* MJRefreshBackStateFooter.m */; };
C62411597A2492F04F7DBAD795157BE7 /* pullLoading15@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4EA0D9E2B2F15B1BE4E3DE095566A398 /* pullLoading15@2x.png */; };
C634B3CBD51BA637770BC8E8991C684B /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 359A4DE4AFFF1344A5481B9EE94ABAC4 /* UIScrollView+MJRefresh.m */; };
C63F543A0CF2BAAF713BB319BB0344B6 /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A7D6998A720A4F72C5E60295FBAC081 /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
CA3909260262E0BA9C5DBE916BDDEAD2 /* Pods-GMRefresh_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F41D2BCAB500EB3824FB321366B3B82D /* Pods-GMRefresh_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
CC4714EF07F6B2BE1CF66E3286081498 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FED3160E762F08590EB82B82EF5400A /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; };
CAC87F9B619933EBB3EF90F8BEC4B933 /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BF3ED4117E8669D0A80A95FA78F1B70 /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; };
CD3B027F5E3F3690C7ECCCC08F13B6D3 /* pullLoading2@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 2C01BB2218B82D9EB3520A89C01BBA97 /* pullLoading2@2x.png */; };
CD8214A3EECFE528C4D73B053757DF69 /* pullLoading19@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 01941CF671ED67515F7EE1C0A1F07C7A /* pullLoading19@2x.png */; };
CD855137702657E028300FD292F0DD1A /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 111692DE01530A8C29FD26231BD49F11 /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
CEF66AE1BB37F4658E17ECDFB8DB8E0C /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = DC096625EEDED28072BD26DB1BE09598 /* MJRefreshConst.m */; };
D8D02C9DC7F7DB935F6E7B82FA04D8FD /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B59FCE777CCCF7415D10A2087C505DA /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; };
DA0605BE52D3F34978D85AF921F09B71 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E5D85CC23130E87B4C2EE8136642079 /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
DA92BD91E4ABD26D9573BBDCD1D7086C /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A8FF7AF8A14C7B50C338359C13B34F2 /* MJRefreshAutoNormalFooter.m */; };
DF689C67A54B5E049F6452759E1D7FA6 /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = C9FCFA9C7618D0EF63681404B1649D15 /* MJRefreshBackFooter.m */; };
DFDCF987754D459A9A658F78419380A1 /* pullLoading7@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3A739740D67CEA9E4E8DE6D9DD341465 /* pullLoading7@3x.png */; };
E0A2B5F201AFF5ACEB374CCEAF494CBD /* pullLoading19@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0DD9E540E36CD36B76C86327144B0317 /* pullLoading19@3x.png */; };
E0D7CB3F95B89A8D8ABF18DD5D57AEB9 /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B8A400588B82BF4960EF4D2EA09623C /* MJRefreshBackFooter.m */; };
E36EB3BA619A1F99BD7CF7510D8B4CC8 /* pullLoading6@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 21CAB8220984AE62194E76101CDD9A0F /* pullLoading6@3x.png */; };
E463942C761B48C41C5DA0C597B4AC47 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0DB34F35BDC86CAD77512DD8D95666F3 /* Foundation.framework */; };
E556DC32AA42204DB9718609196BDA75 /* GMRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = DBEDC954B807ABDC0EB3C3DC5D529F42 /* GMRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
EAF32F38497142C44E5D88A2E2E96C8D /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CDFC130D70F53C367821B55F8F4384A /* MJRefreshAutoGifFooter.m */; };
EB1FE63E851B669159AE2E9363B91181 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACC47ED652C3A45F4AFC7ED038A9741 /* MJRefreshAutoStateFooter.m */; };
ED18891522BF1804F0E420150E8BEF2F /* Pods-GMRefresh_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E9CF8AE082AAF299E64C89DBA458BD9E /* Pods-GMRefresh_Tests-dummy.m */; };
EDBD2A98A13386905DE6A6ECD47103E7 /* pullLoading17@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B61DBE5AEE6420C452C646F7F7370C64 /* pullLoading17@2x.png */; };
F13C9869A5EE0B2900764D9FFE58E2D9 /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 77DC3F79F06F6843F2309A295230E743 /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; };
F4420F78529EA2D3E21B71CDAB85E0BC /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 31A707E4DAD17CB1922117E26D48BB58 /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
F07D8BC30BC460E9A539EE81E0307829 /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBFB5C2A3FCF292E4C8F9355FD0F053 /* MJRefreshGifHeader.m */; };
F49C657C5A795E544FDF0BCC548A6E7A /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 01D848AF815E0097FBB84EE1D0DC9525 /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; };
F51F668D3934078613DE5969F635609A /* pullLoading1@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 81015378881A17A5A6827F8DE97C941B /* pullLoading1@3x.png */; };
F9D704F66AC107054AFB7470363C5C1E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0DB34F35BDC86CAD77512DD8D95666F3 /* Foundation.framework */; };
FD373F73FF87B880993CC1530F2E2675 /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = ECF77FA8854EEBEBEBDDDF91586FB587 /* MJRefreshAutoNormalFooter.m */; };
FF626A9078CEBD507473BAE83BA13B55 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0DB34F35BDC86CAD77512DD8D95666F3 /* Foundation.framework */; };
/* End PBXBuildFile section */
......@@ -139,125 +141,127 @@
/* Begin PBXFileReference section */
011A819BA5B0469C1FEFE3B4FEE9F8D7 /* Pods-GMRefresh_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GMRefresh_Example-acknowledgements.markdown"; sourceTree = "<group>"; };
016240BD7E8C3C8E5FD502EE938216AC /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = "<group>"; };
01941CF671ED67515F7EE1C0A1F07C7A /* pullLoading19@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading19@2x.png"; sourceTree = "<group>"; };
048976C2EDA0818EFEC9CA01BBB880C6 /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = "<group>"; };
01D848AF815E0097FBB84EE1D0DC9525 /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = "<group>"; };
0666A8F7F14C582DEAE4E53297C87184 /* Pods-GMRefresh_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GMRefresh_Tests-frameworks.sh"; sourceTree = "<group>"; };
074388FFA7261AC4C91045DC07E040FB /* pullLoading17@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading17@3x.png"; sourceTree = "<group>"; };
095F569E4B7D1E3A327AA8CF8D501A5B /* Pods_GMRefresh_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GMRefresh_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
0B59FCE777CCCF7415D10A2087C505DA /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = "<group>"; };
0CDFC130D70F53C367821B55F8F4384A /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = "<group>"; };
0DB34F35BDC86CAD77512DD8D95666F3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
0DD9E540E36CD36B76C86327144B0317 /* pullLoading19@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading19@3x.png"; sourceTree = "<group>"; };
0E2E8027F6BF315C3A0DFBF692EFC708 /* Pods-GMRefresh_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-GMRefresh_Tests.modulemap"; sourceTree = "<group>"; };
1013BB4138A5E96F38483C00B1C31B04 /* GMRefresh.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GMRefresh.xcconfig; sourceTree = "<group>"; };
111692DE01530A8C29FD26231BD49F11 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = "<group>"; };
127B1D0F0701DB4651EC7D0E81301635 /* pullLoading11@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading11@3x.png"; sourceTree = "<group>"; };
12D8D2B7DE72D4468D8F1D9160A45CA4 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = "<group>"; };
13A8DE10834533B083980286DD34607D /* Pods-GMRefresh_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GMRefresh_Example-dummy.m"; sourceTree = "<group>"; };
15837E25585428607CE5AC572836EE5D /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = "<group>"; };
1966C56FA14151BC1859877D16BE530B /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
1ACC47ED652C3A45F4AFC7ED038A9741 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = "<group>"; };
1C2AA92DD72AE2CB80E053D969530BFD /* pullLoading3@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading3@2x.png"; sourceTree = "<group>"; };
1CF92C740883CA1980DD4DB8140101BA /* pullLoading4@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading4@2x.png"; sourceTree = "<group>"; };
1FF8AD485363277C1C02F6AA455C22C0 /* pullLoading8@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading8@3x.png"; sourceTree = "<group>"; };
21CAB8220984AE62194E76101CDD9A0F /* pullLoading6@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading6@3x.png"; sourceTree = "<group>"; };
22423C0D9752CE12BC99436DC3E8D200 /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = "<group>"; };
23F9717796B8BB5A0C18C41CD9A84856 /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = "<group>"; };
241C65F7248CA6E283E1AB8C7ECD2D55 /* Pods-GMRefresh_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GMRefresh_Tests.debug.xcconfig"; sourceTree = "<group>"; };
246DE43CB9B220B8A6805010CDDF1A31 /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = "<group>"; };
24AC4A665ADBC804B31AFF48A3CD6060 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
25E1B990CE4C4CD728A278B17E09A203 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = "<group>"; };
25EAAF0715055AC58CD7E57D4D926311 /* Pods_GMRefresh_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GMRefresh_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
288649ECA7EFDED6AAA1133FB129A198 /* GMRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GMRefresh-umbrella.h"; sourceTree = "<group>"; };
28D452368B1E23E34CF464E99127DB84 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = "<group>"; };
2970467A63AAFA0B9F669E070084CED3 /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = "<group>"; };
2A7D6998A720A4F72C5E60295FBAC081 /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = "<group>"; };
2A8FF7AF8A14C7B50C338359C13B34F2 /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = "<group>"; };
2C01BB2218B82D9EB3520A89C01BBA97 /* pullLoading2@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading2@2x.png"; sourceTree = "<group>"; };
2E5D85CC23130E87B4C2EE8136642079 /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = "<group>"; };
2FF9F7454D6F6BFD295023CF64ADB47E /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = "<group>"; };
304CC5D3C2AF74487F5E51E2BD351C87 /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = "<group>"; };
310B7AD4E2B28A6B31E47B7EEE018CC9 /* GMRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GMRefreshHeader.h; sourceTree = "<group>"; };
31A707E4DAD17CB1922117E26D48BB58 /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = "<group>"; };
328E0EFC5658C0CB74EB1EE23D3CE6C2 /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = "<group>"; };
31FF1A0FB915D51EBFBE9B0C0D45453B /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = "<group>"; };
359A4DE4AFFF1344A5481B9EE94ABAC4 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = "<group>"; };
38C489A3003208318DA5FB0617EC8755 /* MJRefresh.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MJRefresh.framework; sourceTree = BUILT_PRODUCTS_DIR; };
395549386F79EB6FD33EB7CA1A017306 /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = "<group>"; };
399AAF1C3C81270C477811E90BCD5614 /* NSBundle+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+MJRefresh.m"; path = "MJRefresh/NSBundle+MJRefresh.m"; sourceTree = "<group>"; };
3A739740D67CEA9E4E8DE6D9DD341465 /* pullLoading7@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading7@3x.png"; sourceTree = "<group>"; };
3B46713227C7FBB5C72F8AEC5E41FE49 /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = "<group>"; };
3D6CA0A599AA99D8D4849BE6F09120B4 /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = "<group>"; };
3EE1492D00BFD7872B2CBE267077E57C /* pullLoading3@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading3@3x.png"; sourceTree = "<group>"; };
3F34941C00D133F21636840F5CBDFA9E /* MJRefresh.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.xcconfig; sourceTree = "<group>"; };
42E4E62A32738F005A022565D1AFE5DE /* pullLoading13@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading13@2x.png"; sourceTree = "<group>"; };
44C686C7976299C4F6594321BD051CFF /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
45BD2B08D2F3B0A8826836729503DD4B /* pullLoading20@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading20@3x.png"; sourceTree = "<group>"; };
49174916E90C21069A65598DEF7EF81B /* MJRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = MJRefresh.modulemap; sourceTree = "<group>"; };
4A2107111278A22DECEDE97B24D9AAA7 /* GMRefresh.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GMRefresh.framework; sourceTree = BUILT_PRODUCTS_DIR; };
4C74133EC32B59B322722897FCCD8EB8 /* pullLoading14@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading14@3x.png"; sourceTree = "<group>"; };
4C8CC605C4A12C1C417C38743F3264EE /* Pods-GMRefresh_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GMRefresh_Example.release.xcconfig"; sourceTree = "<group>"; };
4D24951203305358B8BAF7B29607F4D3 /* pullLoading10@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading10@3x.png"; sourceTree = "<group>"; };
4DA630157576572B41710891D8A57CB3 /* MJRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-umbrella.h"; sourceTree = "<group>"; };
4DDD2138C9540E945CBBFF75FFAD976B /* Pods-GMRefresh_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GMRefresh_Example-acknowledgements.plist"; sourceTree = "<group>"; };
4DDDACFE114A7EA7D4AB7FC2373371C9 /* Pods-GMRefresh_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GMRefresh_Tests-resources.sh"; sourceTree = "<group>"; };
4EA0D9E2B2F15B1BE4E3DE095566A398 /* pullLoading15@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading15@2x.png"; sourceTree = "<group>"; };
4F4E33AD35470F05875A4D46249821AC /* pullLoading5@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading5@2x.png"; sourceTree = "<group>"; };
4F5A5B634CA33B1698A2E5CF8D631818 /* pullLoading10@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading10@2x.png"; sourceTree = "<group>"; };
54D5E66C4CB784F4E5E304401E1580EA /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = "<group>"; };
59B7A716061F6B9BB6471A49CF0708DB /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = "<group>"; };
5CAC44144EC7A9A19B0B69376170B510 /* Pods-GMRefresh_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GMRefresh_Tests-acknowledgements.plist"; sourceTree = "<group>"; };
5DDE8547E589E52BEA89A57C9E23C2B2 /* pullLoading18@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading18@3x.png"; sourceTree = "<group>"; };
5F173BEB68548D2B27EC5A2012B3637C /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = "<group>"; };
62DDF7DD452A6F068492888C8511FE1D /* MJRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-umbrella.h"; sourceTree = "<group>"; };
643756566ABB3A31D2DD8FA24C9F1175 /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = "<group>"; };
64EFA9BD6905FFEF4CB739EB717F4BA9 /* Pods-GMRefresh_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GMRefresh_Example-frameworks.sh"; sourceTree = "<group>"; };
6729F43CED6E36C49961CB944299E3A2 /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = "<group>"; };
6B34906F6C59E69783E189EAF8B283EA /* pullLoading12@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading12@2x.png"; sourceTree = "<group>"; };
6B8A400588B82BF4960EF4D2EA09623C /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = "<group>"; };
6D88BEDD1B5B89A24603DEEDA27376E2 /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = "<group>"; };
6EC9A078E363D9EB755D5F4555A94B84 /* Pods-GMRefresh_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GMRefresh_Tests-umbrella.h"; sourceTree = "<group>"; };
6FED3160E762F08590EB82B82EF5400A /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = "<group>"; };
7729C1A343E3D513F79A0DC39B78CCB5 /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = "<group>"; };
77DC3F79F06F6843F2309A295230E743 /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = "<group>"; };
772828D7C1B5EC016F2A391EE2153D58 /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = "<group>"; };
81015378881A17A5A6827F8DE97C941B /* pullLoading1@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading1@3x.png"; sourceTree = "<group>"; };
81821DE75DF7C24810847A261D6FEB8F /* pullLoading6@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading6@2x.png"; sourceTree = "<group>"; };
82183AC086CC04F7C2B2F83F402DEA80 /* MJRefresh.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MJRefresh.framework; sourceTree = BUILT_PRODUCTS_DIR; };
837A06BFBED76C2A54B3E612E37B4060 /* GMRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GMRefresh-prefix.pch"; sourceTree = "<group>"; };
85CF3F719C396276EA79BD4A0F0C94F7 /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = "<group>"; };
85DBD653F2D083BF866FD821BDED8FE0 /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = "<group>"; };
86A21E24A347B4A063D66C8F7EAC8FAD /* GMRefresh.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GMRefresh.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
871362D3621338D922F3345EFF3BEBF7 /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = "<group>"; };
89E7FFE3499454CF2099186410BBF06F /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = "<group>"; };
8C1FEB34B7F278365E95E34DEE63E0E3 /* pullLoading12@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading12@3x.png"; sourceTree = "<group>"; };
8D7C2452D40999EB5A6CC44820A790D7 /* GMRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GMRefresh-dummy.m"; sourceTree = "<group>"; };
8EE47BA282FA9E24B3E1EE4C37E24D4E /* Pods-GMRefresh_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GMRefresh_Tests.release.xcconfig"; sourceTree = "<group>"; };
8EF1CC5B1CE4B106461CE38F0B1BAAC9 /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = "<group>"; };
91E087BFF5A4C96024394F46FAB373F0 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = "<group>"; };
93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
94B696A0ACB262DA3CE60B10710E6707 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
9752DC74BC15ECD7809435235E94EEB5 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = "<group>"; };
95959F04C94DDA65B9FFB6C650CFFA32 /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = "<group>"; };
97FC1472A0B136834A60A3ECA08212C2 /* pullLoading14@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading14@2x.png"; sourceTree = "<group>"; };
9AA580436E9C99A212342ECAA7466B3A /* GMRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = GMRefresh.modulemap; sourceTree = "<group>"; };
A08D8BC4A0BF4E0CF529ECE95F92D07B /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = "<group>"; };
9BF3ED4117E8669D0A80A95FA78F1B70 /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = "<group>"; };
9C7F9AE22051BDBE67493DD290EC5FD9 /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = "<group>"; };
9CD495E243B865555CCA84971329BB72 /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = "<group>"; };
A426C6202DFE1C777BE4EAB1FF69090E /* pullLoading9@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading9@3x.png"; sourceTree = "<group>"; };
A65AF0DDBD5843EF6BE10063EC1DE255 /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = "<group>"; };
AC53478280ADE2A7DD4422106AA680A1 /* pullLoading9@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading9@2x.png"; sourceTree = "<group>"; };
ACD7FA76704BCF87D337793B471C5792 /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = "<group>"; };
AF3AFEA26B0412278EF308461890A6D2 /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = "<group>"; };
AFAEDBF383DDEE31321D2212F61614CE /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = "<group>"; };
B087D3C06557250878D8194785BC9B7F /* MJRefresh.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.xcconfig; sourceTree = "<group>"; };
AD80BC1238C1F025946C78EA689F9FD6 /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = "<group>"; };
B304E94B68629B5F7DCEEE72885DA524 /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = "<group>"; };
B3CDED5015F51C943FC7CD157492997A /* Pods-GMRefresh_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GMRefresh_Example-resources.sh"; sourceTree = "<group>"; };
B572762D25AE884A6E6025CD584CA279 /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = "<group>"; };
B61DBE5AEE6420C452C646F7F7370C64 /* pullLoading17@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading17@2x.png"; sourceTree = "<group>"; };
BBB368BE19FB542443FF89AD24B51D3B /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = "<group>"; };
BCBFB5C2A3FCF292E4C8F9355FD0F053 /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = "<group>"; };
C05E221B902D9C9D0B6B471A65092CD5 /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = "<group>"; };
C2029A789F562C62DB7B58501323D750 /* pullLoading16@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading16@2x.png"; sourceTree = "<group>"; };
C25F97CF99D16466A1195A66184C1ACA /* pullLoading2@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading2@3x.png"; sourceTree = "<group>"; };
C2727AA066D7039BF2FFBA3BF00B862F /* pullLoading7@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading7@2x.png"; sourceTree = "<group>"; };
C34B80B2FC80402751DD1441869B5BF0 /* Pods-GMRefresh_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-GMRefresh_Example.modulemap"; sourceTree = "<group>"; };
C42AC3D92B4E2BA1C417DE1E9327DBCA /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
CD17F04C33560CF2FFC06251F82482E7 /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = "<group>"; };
C462EB7C5A1BFAAAA88A2A69302D6D0D /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = "<group>"; };
C9FCFA9C7618D0EF63681404B1649D15 /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = "<group>"; };
CD0799BB500F75019954F20434A4457B /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = "<group>"; };
CD7796E0B84D08F3954CB2285480571B /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = "<group>"; };
CF8D03690E3F8241A0C0B7B875F22C1E /* GMRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = GMRefreshFooter.m; sourceTree = "<group>"; };
D2AC591A3B378D87601D176B5BB26FF8 /* GMRefreshConstant.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GMRefreshConstant.h; sourceTree = "<group>"; };
D3494A5480373FC3C9BDB523B7E08DB9 /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = "<group>"; };
D5AAA5ECA575BD194E8E90E319EFB096 /* pullLoading18@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading18@2x.png"; sourceTree = "<group>"; };
D5CCB235447F3E18360C0DAB5E88F117 /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = "<group>"; };
D639EEFDAC52EA8994D3641E90B8F70A /* Pods-GMRefresh_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GMRefresh_Tests-acknowledgements.markdown"; sourceTree = "<group>"; };
D8958DD64D4F8B06313515F077270881 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = "<group>"; };
D9FE37D6C27365FC5DB7076DB6A5080B /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = "<group>"; };
DBEDC954B807ABDC0EB3C3DC5D529F42 /* GMRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GMRefreshFooter.h; sourceTree = "<group>"; };
DC096625EEDED28072BD26DB1BE09598 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = "<group>"; };
DD11A5CA22C6B46244083F06D982BA43 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = "<group>"; };
E0ED9E87EF4214FC4F33251D2A4828EB /* pullLoading16@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading16@3x.png"; sourceTree = "<group>"; };
E3150750AF3E7DB5F86EAE6AC7189E5C /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = "<group>"; };
E368356604CF10F8AAD7EE433BD0C827 /* pullLoading1@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading1@2x.png"; sourceTree = "<group>"; };
E41774274D932BA47734F10C61D3FA33 /* ResourceBundle-GMRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-GMRefresh-Info.plist"; sourceTree = "<group>"; };
E7464DB0CDE518F947518FA7F249C5D2 /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = "<group>"; };
E873525AA0FB861237C838DA238EFCD2 /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = "<group>"; };
E9A6D70C5EE6A262568383B2C0C4C536 /* MJRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = MJRefresh.modulemap; sourceTree = "<group>"; };
E6152B094EC2308994892CDDA977AECA /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = "<group>"; };
E6643DEB2913C3EFD0B2310908C6B17D /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = "<group>"; };
E9CF8AE082AAF299E64C89DBA458BD9E /* Pods-GMRefresh_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GMRefresh_Tests-dummy.m"; sourceTree = "<group>"; };
E9FF982FEAE665E04F9299B972D48C9C /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = "<group>"; };
EA084012D090F8DD02E82029C7D2F723 /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = "<group>"; };
EB99F0939D7EEAD78EAEC85050947FFF /* pullLoading13@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading13@3x.png"; sourceTree = "<group>"; };
ECF77FA8854EEBEBEBDDDF91586FB587 /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = "<group>"; };
F1604E7B9DB88EF0843279A3CF2928F5 /* NSBundle+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+MJRefresh.h"; path = "MJRefresh/NSBundle+MJRefresh.h"; sourceTree = "<group>"; };
F3AE436233E837DCDBC91D84EBD5C51A /* Pods-GMRefresh_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GMRefresh_Example.debug.xcconfig"; sourceTree = "<group>"; };
F41D2BCAB500EB3824FB321366B3B82D /* Pods-GMRefresh_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GMRefresh_Example-umbrella.h"; sourceTree = "<group>"; };
F53FCF4D1E7876A0344D01B39E3864CD /* pullLoading11@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading11@2x.png"; sourceTree = "<group>"; };
F69C93C15F180D64A2909597A017853F /* pullLoading8@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading8@2x.png"; sourceTree = "<group>"; };
F6C210C6125F3FD894144251FC7E5FAD /* pullLoading20@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading20@2x.png"; sourceTree = "<group>"; };
F766F30D149028F931E4B9ADC05B9F34 /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = "<group>"; };
F80206AE99E13A1525DF415A60A84125 /* pullLoading4@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading4@3x.png"; sourceTree = "<group>"; };
FC4887E492494F321BB21A501D791E75 /* pullLoading5@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading5@3x.png"; sourceTree = "<group>"; };
FE61357185D9334BFF0CDD0B07D7E93B /* pullLoading15@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "pullLoading15@3x.png"; sourceTree = "<group>"; };
......@@ -308,6 +312,54 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
0CD1F1B3DBB711F2545AF5DF3CD992F1 /* MJRefresh */ = {
isa = PBXGroup;
children = (
23F9717796B8BB5A0C18C41CD9A84856 /* MJRefresh.h */,
89E7FFE3499454CF2099186410BBF06F /* MJRefreshAutoFooter.h */,
3D6CA0A599AA99D8D4849BE6F09120B4 /* MJRefreshAutoFooter.m */,
2FF9F7454D6F6BFD295023CF64ADB47E /* MJRefreshAutoGifFooter.h */,
C462EB7C5A1BFAAAA88A2A69302D6D0D /* MJRefreshAutoGifFooter.m */,
A65AF0DDBD5843EF6BE10063EC1DE255 /* MJRefreshAutoNormalFooter.h */,
2A8FF7AF8A14C7B50C338359C13B34F2 /* MJRefreshAutoNormalFooter.m */,
85DBD653F2D083BF866FD821BDED8FE0 /* MJRefreshAutoStateFooter.h */,
1ACC47ED652C3A45F4AFC7ED038A9741 /* MJRefreshAutoStateFooter.m */,
28D452368B1E23E34CF464E99127DB84 /* MJRefreshBackFooter.h */,
C9FCFA9C7618D0EF63681404B1649D15 /* MJRefreshBackFooter.m */,
E6152B094EC2308994892CDDA977AECA /* MJRefreshBackGifFooter.h */,
91E087BFF5A4C96024394F46FAB373F0 /* MJRefreshBackGifFooter.m */,
772828D7C1B5EC016F2A391EE2153D58 /* MJRefreshBackNormalFooter.h */,
31FF1A0FB915D51EBFBE9B0C0D45453B /* MJRefreshBackNormalFooter.m */,
2A7D6998A720A4F72C5E60295FBAC081 /* MJRefreshBackStateFooter.h */,
22423C0D9752CE12BC99436DC3E8D200 /* MJRefreshBackStateFooter.m */,
CD0799BB500F75019954F20434A4457B /* MJRefreshComponent.h */,
D9FE37D6C27365FC5DB7076DB6A5080B /* MJRefreshComponent.m */,
D3494A5480373FC3C9BDB523B7E08DB9 /* MJRefreshConst.h */,
D8958DD64D4F8B06313515F077270881 /* MJRefreshConst.m */,
01D848AF815E0097FBB84EE1D0DC9525 /* MJRefreshFooter.h */,
25E1B990CE4C4CD728A278B17E09A203 /* MJRefreshFooter.m */,
95959F04C94DDA65B9FFB6C650CFFA32 /* MJRefreshGifHeader.h */,
BCBFB5C2A3FCF292E4C8F9355FD0F053 /* MJRefreshGifHeader.m */,
D5CCB235447F3E18360C0DAB5E88F117 /* MJRefreshHeader.h */,
6D88BEDD1B5B89A24603DEEDA27376E2 /* MJRefreshHeader.m */,
9CD495E243B865555CCA84971329BB72 /* MJRefreshNormalHeader.h */,
9C7F9AE22051BDBE67493DD290EC5FD9 /* MJRefreshNormalHeader.m */,
9BF3ED4117E8669D0A80A95FA78F1B70 /* MJRefreshStateHeader.h */,
CD7796E0B84D08F3954CB2285480571B /* MJRefreshStateHeader.m */,
F1604E7B9DB88EF0843279A3CF2928F5 /* NSBundle+MJRefresh.h */,
399AAF1C3C81270C477811E90BCD5614 /* NSBundle+MJRefresh.m */,
E6643DEB2913C3EFD0B2310908C6B17D /* UIScrollView+MJExtension.h */,
B572762D25AE884A6E6025CD584CA279 /* UIScrollView+MJExtension.m */,
2970467A63AAFA0B9F669E070084CED3 /* UIScrollView+MJRefresh.h */,
359A4DE4AFFF1344A5481B9EE94ABAC4 /* UIScrollView+MJRefresh.m */,
AD80BC1238C1F025946C78EA689F9FD6 /* UIView+MJExtension.h */,
8EF1CC5B1CE4B106461CE38F0B1BAAC9 /* UIView+MJExtension.m */,
6A06433F80093BADBE67BFF332FBA5A5 /* Resources */,
12268FE51AA8EFF05CCE7DEF196EC193 /* Support Files */,
);
path = MJRefresh;
sourceTree = "<group>";
};
0FBDFD9E171EB28DEBD050738E1BC52E /* Pods-GMRefresh_Tests */ = {
isa = PBXGroup;
children = (
......@@ -326,6 +378,20 @@
path = "Target Support Files/Pods-GMRefresh_Tests";
sourceTree = "<group>";
};
12268FE51AA8EFF05CCE7DEF196EC193 /* Support Files */ = {
isa = PBXGroup;
children = (
24AC4A665ADBC804B31AFF48A3CD6060 /* Info.plist */,
49174916E90C21069A65598DEF7EF81B /* MJRefresh.modulemap */,
3F34941C00D133F21636840F5CBDFA9E /* MJRefresh.xcconfig */,
B304E94B68629B5F7DCEEE72885DA524 /* MJRefresh-dummy.m */,
C05E221B902D9C9D0B6B471A65092CD5 /* MJRefresh-prefix.pch */,
4DA630157576572B41710891D8A57CB3 /* MJRefresh-umbrella.h */,
);
name = "Support Files";
path = "../Target Support Files/MJRefresh";
sourceTree = "<group>";
};
362DDA671AD3AA8AD22B53D69AA8D640 /* GMRefresh */ = {
isa = PBXGroup;
children = (
......@@ -357,6 +423,14 @@
name = Resources;
sourceTree = "<group>";
};
6A06433F80093BADBE67BFF332FBA5A5 /* Resources */ = {
isa = PBXGroup;
children = (
304CC5D3C2AF74487F5E51E2BD351C87 /* MJRefresh.bundle */,
);
name = Resources;
sourceTree = "<group>";
};
720D8BB0CD034302B653CA86024ABFEF /* Products */ = {
isa = PBXGroup;
children = (
......@@ -387,21 +461,13 @@
path = "Target Support Files/Pods-GMRefresh_Example";
sourceTree = "<group>";
};
7B8BBF182F4345C92377831E9EC27EAD /* Resources */ = {
isa = PBXGroup;
children = (
5F173BEB68548D2B27EC5A2012B3637C /* MJRefresh.bundle */,
);
name = Resources;
sourceTree = "<group>";
};
7DB346D0F39D3F0E887471402A8071AB = {
isa = PBXGroup;
children = (
93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */,
D938D9BC8D9A38CD90197D3D5251A028 /* Development Pods */,
FF0EAEB5F9487FB7A4384FBA6D0CC78D /* Frameworks */,
EFCFE1521BECA05329221DB4879CEF8B /* Pods */,
DD0132D41CBFCB2611DA7EABABDA47E4 /* Pods */,
720D8BB0CD034302B653CA86024ABFEF /* Products */,
E1D0C8EB1BF3EB1F04D3DBB7FF4C9C7B /* Targets Support Files */,
);
......@@ -415,66 +481,6 @@
name = iOS;
sourceTree = "<group>";
};
8588C25B248C56948572F3DD25ECE6BF /* MJRefresh */ = {
isa = PBXGroup;
children = (
77DC3F79F06F6843F2309A295230E743 /* MJRefresh.h */,
111692DE01530A8C29FD26231BD49F11 /* MJRefreshAutoFooter.h */,
643756566ABB3A31D2DD8FA24C9F1175 /* MJRefreshAutoFooter.m */,
EA084012D090F8DD02E82029C7D2F723 /* MJRefreshAutoGifFooter.h */,
0CDFC130D70F53C367821B55F8F4384A /* MJRefreshAutoGifFooter.m */,
AF3AFEA26B0412278EF308461890A6D2 /* MJRefreshAutoNormalFooter.h */,
ECF77FA8854EEBEBEBDDDF91586FB587 /* MJRefreshAutoNormalFooter.m */,
BBB368BE19FB542443FF89AD24B51D3B /* MJRefreshAutoStateFooter.h */,
15837E25585428607CE5AC572836EE5D /* MJRefreshAutoStateFooter.m */,
DD11A5CA22C6B46244083F06D982BA43 /* MJRefreshBackFooter.h */,
6B8A400588B82BF4960EF4D2EA09623C /* MJRefreshBackFooter.m */,
ACD7FA76704BCF87D337793B471C5792 /* MJRefreshBackGifFooter.h */,
54D5E66C4CB784F4E5E304401E1580EA /* MJRefreshBackGifFooter.m */,
E3150750AF3E7DB5F86EAE6AC7189E5C /* MJRefreshBackNormalFooter.h */,
F766F30D149028F931E4B9ADC05B9F34 /* MJRefreshBackNormalFooter.m */,
31A707E4DAD17CB1922117E26D48BB58 /* MJRefreshBackStateFooter.h */,
395549386F79EB6FD33EB7CA1A017306 /* MJRefreshBackStateFooter.m */,
E873525AA0FB861237C838DA238EFCD2 /* MJRefreshComponent.h */,
7729C1A343E3D513F79A0DC39B78CCB5 /* MJRefreshComponent.m */,
048976C2EDA0818EFEC9CA01BBB880C6 /* MJRefreshConst.h */,
DC096625EEDED28072BD26DB1BE09598 /* MJRefreshConst.m */,
2E5D85CC23130E87B4C2EE8136642079 /* MJRefreshFooter.h */,
12D8D2B7DE72D4468D8F1D9160A45CA4 /* MJRefreshFooter.m */,
246DE43CB9B220B8A6805010CDDF1A31 /* MJRefreshGifHeader.h */,
871362D3621338D922F3345EFF3BEBF7 /* MJRefreshGifHeader.m */,
6729F43CED6E36C49961CB944299E3A2 /* MJRefreshHeader.h */,
A08D8BC4A0BF4E0CF529ECE95F92D07B /* MJRefreshHeader.m */,
328E0EFC5658C0CB74EB1EE23D3CE6C2 /* MJRefreshNormalHeader.h */,
E9FF982FEAE665E04F9299B972D48C9C /* MJRefreshNormalHeader.m */,
0B59FCE777CCCF7415D10A2087C505DA /* MJRefreshStateHeader.h */,
85CF3F719C396276EA79BD4A0F0C94F7 /* MJRefreshStateHeader.m */,
6FED3160E762F08590EB82B82EF5400A /* UIScrollView+MJExtension.h */,
3B46713227C7FBB5C72F8AEC5E41FE49 /* UIScrollView+MJExtension.m */,
016240BD7E8C3C8E5FD502EE938216AC /* UIScrollView+MJRefresh.h */,
9752DC74BC15ECD7809435235E94EEB5 /* UIScrollView+MJRefresh.m */,
AFAEDBF383DDEE31321D2212F61614CE /* UIView+MJExtension.h */,
E7464DB0CDE518F947518FA7F249C5D2 /* UIView+MJExtension.m */,
7B8BBF182F4345C92377831E9EC27EAD /* Resources */,
8E1657736C71442647767C4BDF0D8234 /* Support Files */,
);
path = MJRefresh;
sourceTree = "<group>";
};
8E1657736C71442647767C4BDF0D8234 /* Support Files */ = {
isa = PBXGroup;
children = (
94B696A0ACB262DA3CE60B10710E6707 /* Info.plist */,
E9A6D70C5EE6A262568383B2C0C4C536 /* MJRefresh.modulemap */,
B087D3C06557250878D8194785BC9B7F /* MJRefresh.xcconfig */,
59B7A716061F6B9BB6471A49CF0708DB /* MJRefresh-dummy.m */,
CD17F04C33560CF2FFC06251F82482E7 /* MJRefresh-prefix.pch */,
62DDF7DD452A6F068492888C8511FE1D /* MJRefresh-umbrella.h */,
);
name = "Support Files";
path = "../Target Support Files/MJRefresh";
sourceTree = "<group>";
};
906CFACBB6589D3777C17DFEEEF4C4AE /* GMRefresh */ = {
isa = PBXGroup;
children = (
......@@ -550,21 +556,21 @@
name = "Development Pods";
sourceTree = "<group>";
};
E1D0C8EB1BF3EB1F04D3DBB7FF4C9C7B /* Targets Support Files */ = {
DD0132D41CBFCB2611DA7EABABDA47E4 /* Pods */ = {
isa = PBXGroup;
children = (
72A59BE55B6252677AA8404137A40E47 /* Pods-GMRefresh_Example */,
0FBDFD9E171EB28DEBD050738E1BC52E /* Pods-GMRefresh_Tests */,
0CD1F1B3DBB711F2545AF5DF3CD992F1 /* MJRefresh */,
);
name = "Targets Support Files";
name = Pods;
sourceTree = "<group>";
};
EFCFE1521BECA05329221DB4879CEF8B /* Pods */ = {
E1D0C8EB1BF3EB1F04D3DBB7FF4C9C7B /* Targets Support Files */ = {
isa = PBXGroup;
children = (
8588C25B248C56948572F3DD25ECE6BF /* MJRefresh */,
72A59BE55B6252677AA8404137A40E47 /* Pods-GMRefresh_Example */,
0FBDFD9E171EB28DEBD050738E1BC52E /* Pods-GMRefresh_Tests */,
);
name = Pods;
name = "Targets Support Files";
sourceTree = "<group>";
};
F7A5A55504407A38A084766AD3A3C0B7 /* GMRefresh */ = {
......@@ -601,30 +607,31 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
78D0E4C4F2F6DDF501CCE07D1C66499C /* Headers */ = {
93273F1E72C10A6A9E5ECB7197FDB72D /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
21727EF0E8B8AEEC6B6047BBB724D919 /* MJRefresh-umbrella.h in Headers */,
F13C9869A5EE0B2900764D9FFE58E2D9 /* MJRefresh.h in Headers */,
CD855137702657E028300FD292F0DD1A /* MJRefreshAutoFooter.h in Headers */,
8097EA12F1BA7F508BFF2FBB96D44271 /* MJRefreshAutoGifFooter.h in Headers */,
2FCD07CBFD6AE6015631B2FA47CA4DBD /* MJRefreshAutoNormalFooter.h in Headers */,
BC4AD1FE1B5E6909658B90F983C2E8C5 /* MJRefreshAutoStateFooter.h in Headers */,
795253A481638D981A1F05B434FFD2D5 /* MJRefreshBackFooter.h in Headers */,
3F96CB1BAB131B3A9C2E09646B8D7BA9 /* MJRefreshBackGifFooter.h in Headers */,
5009C221C2D07C6F6642E5AC44239DBC /* MJRefreshBackNormalFooter.h in Headers */,
F4420F78529EA2D3E21B71CDAB85E0BC /* MJRefreshBackStateFooter.h in Headers */,
1CF2707C1D737E55698F5264F718A768 /* MJRefreshComponent.h in Headers */,
4CFBEFAA832D0AB7D0E31485CF75152A /* MJRefreshConst.h in Headers */,
DA0605BE52D3F34978D85AF921F09B71 /* MJRefreshFooter.h in Headers */,
A325DBD9CF363AA93C7B55344C3945A0 /* MJRefreshGifHeader.h in Headers */,
8187C35C0BDBD268BE1CD1BD7A3B2E82 /* MJRefreshHeader.h in Headers */,
AFD9207194A1040926B464F5BEE37AAB /* MJRefreshNormalHeader.h in Headers */,
D8D02C9DC7F7DB935F6E7B82FA04D8FD /* MJRefreshStateHeader.h in Headers */,
CC4714EF07F6B2BE1CF66E3286081498 /* UIScrollView+MJExtension.h in Headers */,
7606951AB6AAE0AD806FB19F57C04EEA /* UIScrollView+MJRefresh.h in Headers */,
4711B4ADEF7BF066B46A5CD8A1662965 /* UIView+MJExtension.h in Headers */,
76CC185F9BB2CD7A65FDA3F2044BBC8A /* MJRefresh-umbrella.h in Headers */,
8FFB4A3F811DF5B59628B51073EC829B /* MJRefresh.h in Headers */,
29991CAE9743B20DE43C1FA5615DADE6 /* MJRefreshAutoFooter.h in Headers */,
577A78DF2D4C2CE8348F23B768B48ADD /* MJRefreshAutoGifFooter.h in Headers */,
09A44BD18F709EB03E8048FA4FD3FC74 /* MJRefreshAutoNormalFooter.h in Headers */,
B610189264ADDF46372A20F56795EFD2 /* MJRefreshAutoStateFooter.h in Headers */,
BF7B2EB753C395B0B823343A583D56F2 /* MJRefreshBackFooter.h in Headers */,
8B2C58058D3C83FD034618E6CEA5B116 /* MJRefreshBackGifFooter.h in Headers */,
4F15DABAF433108DA0D76BB51E688875 /* MJRefreshBackNormalFooter.h in Headers */,
C63F543A0CF2BAAF713BB319BB0344B6 /* MJRefreshBackStateFooter.h in Headers */,
3E5032FC9CA03AA1122C7A129E9536D0 /* MJRefreshComponent.h in Headers */,
53D9C5ED4219C3CFBC1837BD6D2B8BFE /* MJRefreshConst.h in Headers */,
F49C657C5A795E544FDF0BCC548A6E7A /* MJRefreshFooter.h in Headers */,
9D0DE9D174AED89079B0D1E275B6C909 /* MJRefreshGifHeader.h in Headers */,
BF6940D649C8117B7F1FBD47DC70F0EF /* MJRefreshHeader.h in Headers */,
A938C5D826935FF242F78E221D0D743D /* MJRefreshNormalHeader.h in Headers */,
CAC87F9B619933EBB3EF90F8BEC4B933 /* MJRefreshStateHeader.h in Headers */,
AB76B852B8A80119CEB19E8CC8D23828 /* NSBundle+MJRefresh.h in Headers */,
0E7CEDB72A958FFB94D83ABB1DBE3FB9 /* UIScrollView+MJExtension.h in Headers */,
51CD4ED8713AA68EA151B8695B8669AD /* UIScrollView+MJRefresh.h in Headers */,
194048A2CC82D6D5C21E22C07842422A /* UIView+MJExtension.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -651,9 +658,9 @@
isa = PBXNativeTarget;
buildConfigurationList = EEDEA87BCD096A73344DA34D09ACF675 /* Build configuration list for PBXNativeTarget "MJRefresh" */;
buildPhases = (
928A6B9D881EE0F92A9C02FA9ABD4A09 /* Sources */,
6D04688286F04CAF02577627E3E39C95 /* Sources */,
A872AB6D375CE5E5CEB9957D1D5B794C /* Frameworks */,
78D0E4C4F2F6DDF501CCE07D1C66499C /* Headers */,
93273F1E72C10A6A9E5ECB7197FDB72D /* Headers */,
06AF8714102B6903BB3292B6A20A37B3 /* Resources */,
);
buildRules = (
......@@ -842,37 +849,38 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
8252C8342684E539C8DFA97BACEACF13 /* Sources */ = {
6D04688286F04CAF02577627E3E39C95 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
3AD3AEAE022D2F9AB21B42D26C9E62A7 /* Pods-GMRefresh_Example-dummy.m in Sources */,
0E5DF681C27BBEB988CF0A47C5B6955D /* MJRefresh-dummy.m in Sources */,
C2985026E44A35D37B114E7F2BAC18DD /* MJRefreshAutoFooter.m in Sources */,
A8D28FFD0EB1EB4EDCCA0434D87D88B4 /* MJRefreshAutoGifFooter.m in Sources */,
DA92BD91E4ABD26D9573BBDCD1D7086C /* MJRefreshAutoNormalFooter.m in Sources */,
EB1FE63E851B669159AE2E9363B91181 /* MJRefreshAutoStateFooter.m in Sources */,
DF689C67A54B5E049F6452759E1D7FA6 /* MJRefreshBackFooter.m in Sources */,
93D8AC2B32D6EEB95E7E11F5CE281C2E /* MJRefreshBackGifFooter.m in Sources */,
96741EB0E7A1D44FCB4DAC65858EC6A1 /* MJRefreshBackNormalFooter.m in Sources */,
C45539CE8959A9252562AC9D32B15C24 /* MJRefreshBackStateFooter.m in Sources */,
B73553EFEE825D5F4E164D5ECAAA64D4 /* MJRefreshComponent.m in Sources */,
6036B13FFB8A557C9C0FEC7334381FC6 /* MJRefreshConst.m in Sources */,
34023F3C33F7C70F8A521DCDEB873DA5 /* MJRefreshFooter.m in Sources */,
F07D8BC30BC460E9A539EE81E0307829 /* MJRefreshGifHeader.m in Sources */,
63D3B71C229C44272E5C9A9EB4FB0B82 /* MJRefreshHeader.m in Sources */,
156985AFA17FDB59890B43A487D16776 /* MJRefreshNormalHeader.m in Sources */,
3C7B68363E2BC8FFB79823A0EDEF2401 /* MJRefreshStateHeader.m in Sources */,
A807161F473709CDF4DE350DCA4EF1A4 /* NSBundle+MJRefresh.m in Sources */,
84F374B10C6C1F6DA424D7F3A5353F59 /* UIScrollView+MJExtension.m in Sources */,
C634B3CBD51BA637770BC8E8991C684B /* UIScrollView+MJRefresh.m in Sources */,
77320B703D5D169BABB7CDDDF240D445 /* UIView+MJExtension.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
928A6B9D881EE0F92A9C02FA9ABD4A09 /* Sources */ = {
8252C8342684E539C8DFA97BACEACF13 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
797C683FC1F083780ED4B8C4D8AF9D5D /* MJRefresh-dummy.m in Sources */,
8108D322B3A9C261DD2A45BCE6E9E42E /* MJRefreshAutoFooter.m in Sources */,
EAF32F38497142C44E5D88A2E2E96C8D /* MJRefreshAutoGifFooter.m in Sources */,
FD373F73FF87B880993CC1530F2E2675 /* MJRefreshAutoNormalFooter.m in Sources */,
907CB4B55D245E93E0C541A2BE0293E5 /* MJRefreshAutoStateFooter.m in Sources */,
E0D7CB3F95B89A8D8ABF18DD5D57AEB9 /* MJRefreshBackFooter.m in Sources */,
5C3DA1A336D6C039E6ED9659292897D7 /* MJRefreshBackGifFooter.m in Sources */,
A779B3E3F642D6698DD58EAE203D640B /* MJRefreshBackNormalFooter.m in Sources */,
023F241B232818691CBC1FAF192E33A6 /* MJRefreshBackStateFooter.m in Sources */,
5F6C7D923DDB78CF8D051FCE41DBE580 /* MJRefreshComponent.m in Sources */,
CEF66AE1BB37F4658E17ECDFB8DB8E0C /* MJRefreshConst.m in Sources */,
9F3ADE7A1E814EDBC9DF05347B13DC3E /* MJRefreshFooter.m in Sources */,
402E8ECEECC30B1B25130CC420ECD010 /* MJRefreshGifHeader.m in Sources */,
60850F32D5160051EDF6E38E5F8BAC66 /* MJRefreshHeader.m in Sources */,
4A092FC468E9A5880064C2AAAB037B15 /* MJRefreshNormalHeader.m in Sources */,
0F4C4FA17D58E77292088235EB90F462 /* MJRefreshStateHeader.m in Sources */,
A71E43FE8150737D7988A49E912F74D1 /* UIScrollView+MJExtension.m in Sources */,
8CC8C2B0FCEC7EC16E5B55C7F50E604C /* UIScrollView+MJRefresh.m in Sources */,
3AD63E35A63D96E9AE8EBBD23EF9A7E2 /* UIView+MJExtension.m in Sources */,
3AD3AEAE022D2F9AB21B42D26C9E62A7 /* Pods-GMRefresh_Example-dummy.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -1128,7 +1136,7 @@
};
92222743AB626056A7687071C9E6455B /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = B087D3C06557250878D8194785BC9B7F /* MJRefresh.xcconfig */;
baseConfigurationReference = 3F34941C00D133F21636840F5CBDFA9E /* MJRefresh.xcconfig */;
buildSettings = {
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
......@@ -1246,7 +1254,7 @@
};
DEB42A8A27F92921973A8C71A46BB59B /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = B087D3C06557250878D8194785BC9B7F /* MJRefresh.xcconfig */;
baseConfigurationReference = 3F34941C00D133F21636840F5CBDFA9E /* MJRefresh.xcconfig */;
buildSettings = {
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
......
......@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>3.1.0</string>
<string>3.1.12</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
......
......@@ -18,6 +18,7 @@
#import "MJRefreshStateHeader.h"
#import "MJRefresh.h"
#import "MJRefreshConst.h"
#import "NSBundle+MJRefresh.h"
#import "UIScrollView+MJExtension.h"
#import "UIScrollView+MJRefresh.h"
#import "UIView+MJExtension.h"
......
......@@ -8,7 +8,7 @@
Pod::Spec.new do |s|
s.name = "GMRefresh"
s.version = "0.1.4"
s.version = "0.1.5"
s.summary = "基于MJRefresh做的下拉刷新,自动加载更多"
s.homepage = "http://git.gengmei.cc/gengmeiios/GMLibrary/GMRefresh"
s.license = 'MIT'
......
......@@ -3,34 +3,77 @@
<testsuite name="fastlane.lanes">
<testcase classname="fastlane.lanes" name="0: Verifying required fastlane version" time="0.000442">
<testcase classname="fastlane.lanes" name="0: Verifying required fastlane version" time="0.000561">
</testcase>
<testcase classname="fastlane.lanes" name="1: default_platform" time="0.000222">
<testcase classname="fastlane.lanes" name="1: default_platform" time="0.000262">
</testcase>
<testcase classname="fastlane.lanes" name="2: import_from_git" time="0.737118">
<testcase classname="fastlane.lanes" name="2: import_from_git" time="0.576125">
</testcase>
<testcase classname="fastlane.lanes" name="3: hipchat" time="0.04816">
<testcase classname="fastlane.lanes" name="3: hipchat" time="0.04935">
</testcase>
<testcase classname="fastlane.lanes" name="4: git_pull" time="0.564971">
<testcase classname="fastlane.lanes" name="4: git_pull" time="1.057824">
<failure message="/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/actions/actions_helper.rb:33:in `execute_action'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/runner.rb:187:in `block in execute_action'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/runner.rb:186:in `chdir'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/runner.rb:186:in `execute_action'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/runner.rb:112:in `trigger_action_by_name'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/fast_file.rb:140:in `method_missing'&#10;../../../../../../var/folders/j6/yvgnw4_n0x74mjp36j7h7bjw0000gn/T/fl_clone20161011-8833-xj0v5d/JaguarTemplate.git/fastlane/ios_fastfile:63:in `block (2 levels) in parsing_binding'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/lane.rb:33:in `call'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/runner.rb:49:in `block in execute'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/runner.rb:45:in `chdir'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/runner.rb:45:in `execute'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/lane_manager.rb:46:in `cruise_lane'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/command_line_handler.rb:30:in `handle'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/commands_generator.rb:49:in `block (2 levels) in run'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/commander-4.4.0/lib/commander/command.rb:178:in `call'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/commander-4.4.0/lib/commander/command.rb:153:in `run'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/commander-4.4.0/lib/commander/runner.rb:444:in `run_active_command'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane_core-0.52.1/lib/fastlane_core/ui/fastlane_runner.rb:36:in `run!'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/commander-4.4.0/lib/commander/delegates.rb:15:in `run!'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/commands_generator.rb:244:in `run'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/commands_generator.rb:20:in `start'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/lib/fastlane/cli_tools_distributor.rb:58:in `take_off'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/gems/fastlane-1.105.1/bin/fastlane:5:in `&lt;top (required)&gt;'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/bin/fastlane:23:in `load'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/bin/fastlane:23:in `&lt;main&gt;'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'&#10;/Users/gengmei/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `&lt;main&gt;'&#10;&#10;Exit status of command 'git pull &amp;&amp; git fetch --tags' was 1 instead of 0.&#10;From git.gengmei.cc:gengmeiios/GMRefresh&#10; * [new branch] GMRefreshBugFix -&gt; origin/GMRefreshBugFix&#10; * [new branch] master -&gt; origin/master&#10;There is no tracking information for the current branch.&#10;Please specify which branch you want to merge with.&#10;See git-pull(1) for details.&#10;&#10; git pull &lt;remote&gt; &lt;branch&gt;&#10;&#10;If you wish to set tracking information for this branch you can do so with:&#10;&#10; git branch --set-upstream-to=origin/&lt;branch&gt; master&#10;&#10;" />
</testcase>
<testcase classname="fastlane.lanes" name="5: ensure_git_branch" time="0.006838">
</testcase>
<testcase classname="fastlane.lanes" name="6: pod_install" time="14.856944">
</testcase>
<testcase classname="fastlane.lanes" name="7: pod_lib_lint" time="28.55106">
</testcase>
<testcase classname="fastlane.lanes" name="8: version_bump_podspec" time="0.001244">
</testcase>
<testcase classname="fastlane.lanes" name="9: git_commit_all" time="0.086962">
</testcase>
<testcase classname="fastlane.lanes" name="10: add_git_tag" time="0.011892">
</testcase>
<testcase classname="fastlane.lanes" name="11: push_to_git_remote" time="1.034166">
</testcase>
<testcase classname="fastlane.lanes" name="12: pod_push" time="16.108675">
</testcase>
<testcase classname="fastlane.lanes" name="13: pod_repo_update" time="1.448015">
</testcase>
<testcase classname="fastlane.lanes" name="5: hipchat" time="0.049557">
<testcase classname="fastlane.lanes" name="14: hipchat" time="0.525092">
</testcase>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment