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

Bump version to 0.1.5

parent 076fac84
PODS: PODS:
- GMRefresh (0.1.4): - GMRefresh (0.1.4):
- MJRefresh (~> 3.1.0) - MJRefresh (~> 3.1.0)
- MJRefresh (3.1.0) - MJRefresh (3.1.12)
DEPENDENCIES: DEPENDENCIES:
- GMRefresh (from `../`) - GMRefresh (from `../`)
...@@ -12,7 +12,7 @@ EXTERNAL SOURCES: ...@@ -12,7 +12,7 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
GMRefresh: 4a1d3332576e7a4d9be742d62fec260fd718e65d GMRefresh: 4a1d3332576e7a4d9be742d62fec260fd718e65d
MJRefresh: 743e6404967d1c2c688472ea3ecfde247d872db4 MJRefresh: b96cdb21c4aa75a7b07654311ab2f315c497e806
PODFILE CHECKSUM: 9e12f3fbdc35e42e007aeabb4d7a97d764319eea PODFILE CHECKSUM: 9e12f3fbdc35e42e007aeabb4d7a97d764319eea
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
@property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh; @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh;
/** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
@property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用automaticallyChangeAlpha属性"); @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用triggerAutomaticallyRefreshPercent属性");
/** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
@property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent; @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent;
......
...@@ -110,6 +110,12 @@ ...@@ -110,6 +110,12 @@
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self executeRefreshingCallback]; [self executeRefreshingCallback];
}); });
} else if (state == MJRefreshStateNoMoreData || state == MJRefreshStateIdle) {
if (MJRefreshStateRefreshing == oldState) {
if (self.endRefreshingCompletionBlock) {
self.endRefreshingCompletionBlock();
}
}
} }
} }
......
...@@ -95,6 +95,10 @@ ...@@ -95,6 +95,10 @@
if (self.isAutomaticallyChangeAlpha) self.alpha = 0.0; if (self.isAutomaticallyChangeAlpha) self.alpha = 0.0;
} completion:^(BOOL finished) { } completion:^(BOOL finished) {
self.pullingPercent = 0.0; self.pullingPercent = 0.0;
if (self.endRefreshingCompletionBlock) {
self.endRefreshingCompletionBlock();
}
}]; }];
} }
...@@ -122,29 +126,19 @@ ...@@ -122,29 +126,19 @@
} }
} }
#pragma mark - 公共方法
- (void)endRefreshing - (void)endRefreshing
{ {
if ([self.scrollView isKindOfClass:[UICollectionView class]]) { dispatch_async(dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ self.state = MJRefreshStateIdle;
[super endRefreshing]; });
});
} else {
[super endRefreshing];
}
} }
- (void)noticeNoMoreData - (void)endRefreshingWithNoMoreData
{ {
if ([self.scrollView isKindOfClass:[UICollectionView class]]) { dispatch_async(dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ self.state = MJRefreshStateNoMoreData;
[super noticeNoMoreData]; });
});
} else {
[super noticeNoMoreData];
}
} }
#pragma mark - 私有方法 #pragma mark - 私有方法
#pragma mark 获得scrollView的内容 超出 view 的高度 #pragma mark 获得scrollView的内容 超出 view 的高度
- (CGFloat)heightForContentBreakView - (CGFloat)heightForContentBreakView
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#import "UIView+MJExtension.h" #import "UIView+MJExtension.h"
#import "UIScrollView+MJExtension.h" #import "UIScrollView+MJExtension.h"
#import "UIScrollView+MJRefresh.h" #import "UIScrollView+MJRefresh.h"
#import "NSBundle+MJRefresh.h"
/** 刷新控件的状态 */ /** 刷新控件的状态 */
typedef NS_ENUM(NSInteger, MJRefreshState) { typedef NS_ENUM(NSInteger, MJRefreshState) {
...@@ -29,6 +30,10 @@ typedef NS_ENUM(NSInteger, MJRefreshState) { ...@@ -29,6 +30,10 @@ typedef NS_ENUM(NSInteger, MJRefreshState) {
/** 进入刷新状态的回调 */ /** 进入刷新状态的回调 */
typedef void (^MJRefreshComponentRefreshingBlock)(); typedef void (^MJRefreshComponentRefreshingBlock)();
/** 开始刷新后的回调(进入刷新状态后的回调) */
typedef void (^MJRefreshComponentbeginRefreshingCompletionBlock)();
/** 结束刷新后的回调 */
typedef void (^MJRefreshComponentEndRefreshingCompletionBlock)();
/** 刷新控件的基类 */ /** 刷新控件的基类 */
@interface MJRefreshComponent : UIView @interface MJRefreshComponent : UIView
...@@ -43,6 +48,7 @@ typedef void (^MJRefreshComponentRefreshingBlock)(); ...@@ -43,6 +48,7 @@ typedef void (^MJRefreshComponentRefreshingBlock)();
@property (copy, nonatomic) MJRefreshComponentRefreshingBlock refreshingBlock; @property (copy, nonatomic) MJRefreshComponentRefreshingBlock refreshingBlock;
/** 设置回调对象和回调方法 */ /** 设置回调对象和回调方法 */
- (void)setRefreshingTarget:(id)target refreshingAction:(SEL)action; - (void)setRefreshingTarget:(id)target refreshingAction:(SEL)action;
/** 回调对象 */ /** 回调对象 */
@property (weak, nonatomic) id refreshingTarget; @property (weak, nonatomic) id refreshingTarget;
/** 回调方法 */ /** 回调方法 */
...@@ -53,8 +59,14 @@ typedef void (^MJRefreshComponentRefreshingBlock)(); ...@@ -53,8 +59,14 @@ typedef void (^MJRefreshComponentRefreshingBlock)();
#pragma mark - 刷新状态控制 #pragma mark - 刷新状态控制
/** 进入刷新状态 */ /** 进入刷新状态 */
- (void)beginRefreshing; - (void)beginRefreshing;
- (void)beginRefreshingWithCompletionBlock:(void (^)())completionBlock;
/** 开始刷新后的回调(进入刷新状态后的回调) */
@property (copy, nonatomic) MJRefreshComponentbeginRefreshingCompletionBlock beginRefreshingCompletionBlock;
/** 结束刷新的回调 */
@property (copy, nonatomic) MJRefreshComponentEndRefreshingCompletionBlock endRefreshingCompletionBlock;
/** 结束刷新状态 */ /** 结束刷新状态 */
- (void)endRefreshing; - (void)endRefreshing;
- (void)endRefreshingWithCompletionBlock:(void (^)())completionBlock;
/** 是否正在刷新 */ /** 是否正在刷新 */
- (BOOL)isRefreshing; - (BOOL)isRefreshing;
/** 刷新状态 一般交给子类内部实现 */ /** 刷新状态 一般交给子类内部实现 */
...@@ -89,5 +101,6 @@ typedef void (^MJRefreshComponentRefreshingBlock)(); ...@@ -89,5 +101,6 @@ typedef void (^MJRefreshComponentRefreshingBlock)();
@end @end
@interface UILabel(MJRefresh) @interface UILabel(MJRefresh)
+ (instancetype)label; + (instancetype)mj_label;
- (CGFloat)mj_textWith;
@end @end
...@@ -9,8 +9,6 @@ ...@@ -9,8 +9,6 @@
#import "MJRefreshComponent.h" #import "MJRefreshComponent.h"
#import "MJRefreshConst.h" #import "MJRefreshConst.h"
#import "UIView+MJExtension.h"
#import "UIScrollView+MJRefresh.h"
@interface MJRefreshComponent() @interface MJRefreshComponent()
@property (strong, nonatomic) UIPanGestureRecognizer *pan; @property (strong, nonatomic) UIPanGestureRecognizer *pan;
...@@ -39,9 +37,9 @@ ...@@ -39,9 +37,9 @@
- (void)layoutSubviews - (void)layoutSubviews
{ {
[super layoutSubviews];
[self placeSubviews]; [self placeSubviews];
[super layoutSubviews];
} }
- (void)placeSubviews{} - (void)placeSubviews{}
...@@ -133,6 +131,16 @@ ...@@ -133,6 +131,16 @@
self.refreshingAction = action; self.refreshingAction = action;
} }
- (void)setState:(MJRefreshState)state
{
_state = state;
// 加入主队列的目的是等setState:方法调用完毕、设置完文字后再去布局子控件
dispatch_async(dispatch_get_main_queue(), ^{
[self setNeedsLayout];
});
}
#pragma mark 进入刷新状态 #pragma mark 进入刷新状态
- (void)beginRefreshing - (void)beginRefreshing
{ {
...@@ -144,18 +152,35 @@ ...@@ -144,18 +152,35 @@
if (self.window) { if (self.window) {
self.state = MJRefreshStateRefreshing; self.state = MJRefreshStateRefreshing;
} else { } else {
self.state = MJRefreshStateWillRefresh; // 预防正在刷新中时,调用本方法使得header inset回置失败
// 刷新(预防从另一个控制器回到这个控制器的情况,回来要重新刷新一下) if (self.state != MJRefreshStateRefreshing) {
[self setNeedsDisplay]; self.state = MJRefreshStateWillRefresh;
// 刷新(预防从另一个控制器回到这个控制器的情况,回来要重新刷新一下)
[self setNeedsDisplay];
}
} }
} }
- (void)beginRefreshingWithCompletionBlock:(void (^)())completionBlock
{
self.beginRefreshingCompletionBlock = completionBlock;
[self beginRefreshing];
}
#pragma mark 结束刷新状态 #pragma mark 结束刷新状态
- (void)endRefreshing - (void)endRefreshing
{ {
self.state = MJRefreshStateIdle; self.state = MJRefreshStateIdle;
} }
- (void)endRefreshingWithCompletionBlock:(void (^)())completionBlock
{
self.endRefreshingCompletionBlock = completionBlock;
[self endRefreshing];
}
#pragma mark 是否正在刷新 #pragma mark 是否正在刷新
- (BOOL)isRefreshing - (BOOL)isRefreshing
{ {
...@@ -208,12 +233,15 @@ ...@@ -208,12 +233,15 @@
if ([self.refreshingTarget respondsToSelector:self.refreshingAction]) { if ([self.refreshingTarget respondsToSelector:self.refreshingAction]) {
MJRefreshMsgSend(MJRefreshMsgTarget(self.refreshingTarget), self.refreshingAction, self); MJRefreshMsgSend(MJRefreshMsgTarget(self.refreshingTarget), self.refreshingAction, self);
} }
if (self.beginRefreshingCompletionBlock) {
self.beginRefreshingCompletionBlock();
}
}); });
} }
@end @end
@implementation UILabel(MJRefresh) @implementation UILabel(MJRefresh)
+ (instancetype)label + (instancetype)mj_label
{ {
UILabel *label = [[self alloc] init]; UILabel *label = [[self alloc] init];
label.font = MJRefreshLabelFont; label.font = MJRefreshLabelFont;
...@@ -223,4 +251,24 @@ ...@@ -223,4 +251,24 @@
label.backgroundColor = [UIColor clearColor]; label.backgroundColor = [UIColor clearColor];
return label; 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 @end
\ No newline at end of file
...@@ -118,38 +118,32 @@ ...@@ -118,38 +118,32 @@
if (self.isAutomaticallyChangeAlpha) self.alpha = 0.0; if (self.isAutomaticallyChangeAlpha) self.alpha = 0.0;
} completion:^(BOOL finished) { } completion:^(BOOL finished) {
self.pullingPercent = 0.0; self.pullingPercent = 0.0;
}];
} else if (state == MJRefreshStateRefreshing) {
[UIView animateWithDuration:MJRefreshFastAnimationDuration animations:^{
// 增加滚动区域
CGFloat top = self.scrollViewOriginalInset.top + self.mj_h;
self.scrollView.mj_insetT = top;
// 设置滚动位置 if (self.endRefreshingCompletionBlock) {
self.scrollView.mj_offsetY = - top; self.endRefreshingCompletionBlock();
} completion:^(BOOL finished) { }
[self executeRefreshingCallback];
}]; }];
} 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 setContentOffset:CGPointMake(0, -top) animated:NO];
} completion:^(BOOL finished) {
[self executeRefreshingCallback];
}];
});
} }
} }
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
}
#pragma mark - 公共方法 #pragma mark - 公共方法
- (void)endRefreshing - (void)endRefreshing
{ {
if ([self.scrollView isKindOfClass:[UICollectionView class]]) { dispatch_async(dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ self.state = MJRefreshStateIdle;
[super endRefreshing]; });
});
} else {
[super endRefreshing];
}
} }
- (NSDate *)lastUpdatedTime - (NSDate *)lastUpdatedTime
......
...@@ -66,6 +66,14 @@ ...@@ -66,6 +66,14 @@
} }
#pragma mark - 实现父类的方法 #pragma mark - 实现父类的方法
- (void)prepare
{
[super prepare];
// 初始化间距
self.labelLeftInset = 20;
}
- (void)placeSubviews - (void)placeSubviews
{ {
[super placeSubviews]; [super placeSubviews];
...@@ -77,7 +85,7 @@ ...@@ -77,7 +85,7 @@
self.gifView.contentMode = UIViewContentModeCenter; self.gifView.contentMode = UIViewContentModeCenter;
} else { } else {
self.gifView.contentMode = UIViewContentModeRight; 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 @@ ...@@ -31,7 +31,7 @@
self.loadingView = nil; self.loadingView = nil;
[self setNeedsLayout]; [self setNeedsLayout];
} }
#pragma makr - 重写父类的方法 #pragma mark - 重写父类的方法
- (void)prepare - (void)prepare
{ {
[super prepare]; [super prepare];
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
// 圈圈 // 圈圈
CGFloat loadingCenterX = self.mj_w * 0.5; CGFloat loadingCenterX = self.mj_w * 0.5;
if (!self.isRefreshingTitleHidden) { if (!self.isRefreshingTitleHidden) {
loadingCenterX -= 100; loadingCenterX -= self.stateLabel.mj_textWith * 0.5 + self.labelLeftInset;
} }
CGFloat loadingCenterY = self.mj_h * 0.5; CGFloat loadingCenterY = self.mj_h * 0.5;
self.loadingView.center = CGPointMake(loadingCenterX, loadingCenterY); self.loadingView.center = CGPointMake(loadingCenterX, loadingCenterY);
......
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
#import "MJRefreshAutoFooter.h" #import "MJRefreshAutoFooter.h"
@interface MJRefreshAutoStateFooter : MJRefreshAutoFooter @interface MJRefreshAutoStateFooter : MJRefreshAutoFooter
/** 文字距离圈圈、箭头的距离 */
@property (assign, nonatomic) CGFloat labelLeftInset;
/** 显示刷新状态的label */ /** 显示刷新状态的label */
@property (weak, nonatomic, readonly) UILabel *stateLabel; @property (weak, nonatomic, readonly) UILabel *stateLabel;
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
- (UILabel *)stateLabel - (UILabel *)stateLabel
{ {
if (!_stateLabel) { if (!_stateLabel) {
[self addSubview:_stateLabel = [UILabel label]]; [self addSubview:_stateLabel = [UILabel mj_label]];
} }
return _stateLabel; return _stateLabel;
} }
...@@ -56,10 +56,13 @@ ...@@ -56,10 +56,13 @@
{ {
[super prepare]; [super prepare];
// 初始化间距
self.labelLeftInset = MJRefreshLabelLeftInset;
// 初始化文字 // 初始化文字
[self setTitle:MJRefreshAutoFooterIdleText forState:MJRefreshStateIdle]; [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshAutoFooterIdleText] forState:MJRefreshStateIdle];
[self setTitle:MJRefreshAutoFooterRefreshingText forState:MJRefreshStateRefreshing]; [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshAutoFooterRefreshingText] forState:MJRefreshStateRefreshing];
[self setTitle:MJRefreshAutoFooterNoMoreDataText forState:MJRefreshStateNoMoreData]; [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshAutoFooterNoMoreDataText] forState:MJRefreshStateNoMoreData];
// 监听label // 监听label
self.stateLabel.userInteractionEnabled = YES; self.stateLabel.userInteractionEnabled = YES;
......
...@@ -66,6 +66,14 @@ ...@@ -66,6 +66,14 @@
} }
#pragma mark - 实现父类的方法 #pragma mark - 实现父类的方法
- (void)prepare
{
[super prepare];
// 初始化间距
self.labelLeftInset = 20;
}
- (void)setPullingPercent:(CGFloat)pullingPercent - (void)setPullingPercent:(CGFloat)pullingPercent
{ {
[super setPullingPercent:pullingPercent]; [super setPullingPercent:pullingPercent];
...@@ -88,7 +96,7 @@ ...@@ -88,7 +96,7 @@
self.gifView.contentMode = UIViewContentModeCenter; self.gifView.contentMode = UIViewContentModeCenter;
} else { } else {
self.gifView.contentMode = UIViewContentModeRight; 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 @@ ...@@ -7,6 +7,7 @@
// //
#import "MJRefreshBackNormalFooter.h" #import "MJRefreshBackNormalFooter.h"
#import "NSBundle+MJRefresh.h"
@interface MJRefreshBackNormalFooter() @interface MJRefreshBackNormalFooter()
{ {
...@@ -20,8 +21,7 @@ ...@@ -20,8 +21,7 @@
- (UIImageView *)arrowView - (UIImageView *)arrowView
{ {
if (!_arrowView) { if (!_arrowView) {
UIImage *image = [UIImage imageNamed:MJRefreshSrcName(@"arrow.png")] ?: [UIImage imageNamed:MJRefreshFrameworkSrcName(@"arrow.png")]; UIImageView *arrowView = [[UIImageView alloc] initWithImage:[NSBundle mj_arrowImage]];
UIImageView *arrowView = [[UIImageView alloc] initWithImage:image];
[self addSubview:_arrowView = arrowView]; [self addSubview:_arrowView = arrowView];
} }
return _arrowView; return _arrowView;
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
self.loadingView = nil; self.loadingView = nil;
[self setNeedsLayout]; [self setNeedsLayout];
} }
#pragma makr - 重写父类的方法 #pragma mark - 重写父类的方法
- (void)prepare - (void)prepare
{ {
[super prepare]; [super prepare];
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
// 箭头的中心点 // 箭头的中心点
CGFloat arrowCenterX = self.mj_w * 0.5; CGFloat arrowCenterX = self.mj_w * 0.5;
if (!self.stateLabel.hidden) { if (!self.stateLabel.hidden) {
arrowCenterX -= 100; arrowCenterX -= self.labelLeftInset + self.stateLabel.mj_textWith * 0.5;
} }
CGFloat arrowCenterY = self.mj_h * 0.5; CGFloat arrowCenterY = self.mj_h * 0.5;
CGPoint arrowCenter = CGPointMake(arrowCenterX, arrowCenterY); CGPoint arrowCenter = CGPointMake(arrowCenterX, arrowCenterY);
...@@ -75,6 +75,8 @@ ...@@ -75,6 +75,8 @@
if (self.loadingView.constraints.count == 0) { if (self.loadingView.constraints.count == 0) {
self.loadingView.center = arrowCenter; self.loadingView.center = arrowCenter;
} }
self.arrowView.tintColor = self.stateLabel.textColor;
} }
- (void)setState:(MJRefreshState)state - (void)setState:(MJRefreshState)state
......
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
#import "MJRefreshBackFooter.h" #import "MJRefreshBackFooter.h"
@interface MJRefreshBackStateFooter : MJRefreshBackFooter @interface MJRefreshBackStateFooter : MJRefreshBackFooter
/** 文字距离圈圈、箭头的距离 */
@property (assign, nonatomic) CGFloat labelLeftInset;
/** 显示刷新状态的label */ /** 显示刷新状态的label */
@property (weak, nonatomic, readonly) UILabel *stateLabel; @property (weak, nonatomic, readonly) UILabel *stateLabel;
/** 设置state状态下的文字 */ /** 设置state状态下的文字 */
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
- (UILabel *)stateLabel - (UILabel *)stateLabel
{ {
if (!_stateLabel) { if (!_stateLabel) {
[self addSubview:_stateLabel = [UILabel label]]; [self addSubview:_stateLabel = [UILabel mj_label]];
} }
return _stateLabel; return _stateLabel;
} }
...@@ -52,11 +52,14 @@ ...@@ -52,11 +52,14 @@
{ {
[super prepare]; [super prepare];
// 初始化间距
self.labelLeftInset = MJRefreshLabelLeftInset;
// 初始化文字 // 初始化文字
[self setTitle:MJRefreshBackFooterIdleText forState:MJRefreshStateIdle]; [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterIdleText] forState:MJRefreshStateIdle];
[self setTitle:MJRefreshBackFooterPullingText forState:MJRefreshStatePulling]; [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterPullingText] forState:MJRefreshStatePulling];
[self setTitle:MJRefreshBackFooterRefreshingText forState:MJRefreshStateRefreshing]; [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterRefreshingText] forState:MJRefreshStateRefreshing];
[self setTitle:MJRefreshBackFooterNoMoreDataText forState:MJRefreshStateNoMoreData]; [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterNoMoreDataText] forState:MJRefreshStateNoMoreData];
} }
- (void)placeSubviews - (void)placeSubviews
......
...@@ -66,6 +66,14 @@ ...@@ -66,6 +66,14 @@
} }
#pragma mark - 实现父类的方法 #pragma mark - 实现父类的方法
- (void)prepare
{
[super prepare];
// 初始化间距
self.labelLeftInset = 20;
}
- (void)setPullingPercent:(CGFloat)pullingPercent - (void)setPullingPercent:(CGFloat)pullingPercent
{ {
[super setPullingPercent:pullingPercent]; [super setPullingPercent:pullingPercent];
...@@ -90,7 +98,14 @@ ...@@ -90,7 +98,14 @@
self.gifView.contentMode = UIViewContentModeCenter; self.gifView.contentMode = UIViewContentModeCenter;
} else { } else {
self.gifView.contentMode = UIViewContentModeRight; 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 @@ ...@@ -7,6 +7,7 @@
// //
#import "MJRefreshNormalHeader.h" #import "MJRefreshNormalHeader.h"
#import "NSBundle+MJRefresh.h"
@interface MJRefreshNormalHeader() @interface MJRefreshNormalHeader()
{ {
...@@ -20,8 +21,7 @@ ...@@ -20,8 +21,7 @@
- (UIImageView *)arrowView - (UIImageView *)arrowView
{ {
if (!_arrowView) { if (!_arrowView) {
UIImage *image = [UIImage imageNamed:MJRefreshSrcName(@"arrow.png")] ?: [UIImage imageNamed:MJRefreshFrameworkSrcName(@"arrow.png")]; UIImageView *arrowView = [[UIImageView alloc] initWithImage:[NSBundle mj_arrowImage]];
UIImageView *arrowView = [[UIImageView alloc] initWithImage:image];
[self addSubview:_arrowView = arrowView]; [self addSubview:_arrowView = arrowView];
} }
return _arrowView; return _arrowView;
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
[self setNeedsLayout]; [self setNeedsLayout];
} }
#pragma makr - 重写父类的方法 #pragma mark - 重写父类的方法
- (void)prepare - (void)prepare
{ {
[super prepare]; [super prepare];
...@@ -61,7 +61,13 @@ ...@@ -61,7 +61,13 @@
// 箭头的中心点 // 箭头的中心点
CGFloat arrowCenterX = self.mj_w * 0.5; CGFloat arrowCenterX = self.mj_w * 0.5;
if (!self.stateLabel.hidden) { 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; CGFloat arrowCenterY = self.mj_h * 0.5;
CGPoint arrowCenter = CGPointMake(arrowCenterX, arrowCenterY); CGPoint arrowCenter = CGPointMake(arrowCenterX, arrowCenterY);
...@@ -76,6 +82,8 @@ ...@@ -76,6 +82,8 @@
if (self.loadingView.constraints.count == 0) { if (self.loadingView.constraints.count == 0) {
self.loadingView.center = arrowCenter; self.loadingView.center = arrowCenter;
} }
self.arrowView.tintColor = self.stateLabel.textColor;
} }
- (void)setState:(MJRefreshState)state - (void)setState:(MJRefreshState)state
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
@property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel; @property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel;
#pragma mark - 状态相关 #pragma mark - 状态相关
/** 文字距离圈圈、箭头的距离 */
@property (assign, nonatomic) CGFloat labelLeftInset;
/** 显示刷新状态的label */ /** 显示刷新状态的label */
@property (weak, nonatomic, readonly) UILabel *stateLabel; @property (weak, nonatomic, readonly) UILabel *stateLabel;
/** 设置state状态下的文字 */ /** 设置state状态下的文字 */
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
- (UILabel *)stateLabel - (UILabel *)stateLabel
{ {
if (!_stateLabel) { if (!_stateLabel) {
[self addSubview:_stateLabel = [UILabel label]]; [self addSubview:_stateLabel = [UILabel mj_label]];
} }
return _stateLabel; return _stateLabel;
} }
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
- (UILabel *)lastUpdatedTimeLabel - (UILabel *)lastUpdatedTimeLabel
{ {
if (!_lastUpdatedTimeLabel) { if (!_lastUpdatedTimeLabel) {
[self addSubview:_lastUpdatedTimeLabel = [UILabel label]]; [self addSubview:_lastUpdatedTimeLabel = [UILabel mj_label]];
} }
return _lastUpdatedTimeLabel; return _lastUpdatedTimeLabel;
} }
...@@ -86,8 +86,10 @@ ...@@ -86,8 +86,10 @@
// 2.格式化日期 // 2.格式化日期
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
BOOL isToday = NO;
if ([cmp1 day] == [cmp2 day]) { // 今天 if ([cmp1 day] == [cmp2 day]) { // 今天
formatter.dateFormat = @"今天 HH:mm"; formatter.dateFormat = @" HH:mm";
isToday = YES;
} else if ([cmp1 year] == [cmp2 year]) { // 今年 } else if ([cmp1 year] == [cmp2 year]) { // 今年
formatter.dateFormat = @"MM-dd HH:mm"; formatter.dateFormat = @"MM-dd HH:mm";
} else { } else {
...@@ -96,9 +98,14 @@ ...@@ -96,9 +98,14 @@
NSString *time = [formatter stringFromDate:lastUpdatedTime]; NSString *time = [formatter stringFromDate:lastUpdatedTime];
// 3.显示日期 // 3.显示日期
self.lastUpdatedTimeLabel.text = [NSString stringWithFormat:@"最后更新:%@", time]; self.lastUpdatedTimeLabel.text = [NSString stringWithFormat:@"%@%@%@",
[NSBundle mj_localizedStringForKey:MJRefreshHeaderLastTimeText],
isToday ? [NSBundle mj_localizedStringForKey:MJRefreshHeaderDateTodayText] : @"",
time];
} else { } else {
self.lastUpdatedTimeLabel.text = @"最后更新:无记录"; self.lastUpdatedTimeLabel.text = [NSString stringWithFormat:@"%@%@",
[NSBundle mj_localizedStringForKey:MJRefreshHeaderLastTimeText],
[NSBundle mj_localizedStringForKey:MJRefreshHeaderNoneLastDateText]];
} }
} }
...@@ -107,10 +114,13 @@ ...@@ -107,10 +114,13 @@
{ {
[super prepare]; [super prepare];
// 初始化间距
self.labelLeftInset = MJRefreshLabelLeftInset;
// 初始化文字 // 初始化文字
[self setTitle:MJRefreshHeaderIdleText forState:MJRefreshStateIdle]; [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshHeaderIdleText] forState:MJRefreshStateIdle];
[self setTitle:MJRefreshHeaderPullingText forState:MJRefreshStatePulling]; [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshHeaderPullingText] forState:MJRefreshStatePulling];
[self setTitle:MJRefreshHeaderRefreshingText forState:MJRefreshStateRefreshing]; [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshHeaderRefreshingText] forState:MJRefreshStateRefreshing];
} }
- (void)placeSubviews - (void)placeSubviews
......
...@@ -29,11 +29,8 @@ ...@@ -29,11 +29,8 @@
// 字体大小 // 字体大小
#define MJRefreshLabelFont [UIFont boldSystemFontOfSize:14] #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 MJRefreshHeaderHeight;
UIKIT_EXTERN const CGFloat MJRefreshFooterHeight; UIKIT_EXTERN const CGFloat MJRefreshFooterHeight;
UIKIT_EXTERN const CGFloat MJRefreshFastAnimationDuration; UIKIT_EXTERN const CGFloat MJRefreshFastAnimationDuration;
...@@ -59,6 +56,10 @@ UIKIT_EXTERN NSString *const MJRefreshBackFooterPullingText; ...@@ -59,6 +56,10 @@ UIKIT_EXTERN NSString *const MJRefreshBackFooterPullingText;
UIKIT_EXTERN NSString *const MJRefreshBackFooterRefreshingText; UIKIT_EXTERN NSString *const MJRefreshBackFooterRefreshingText;
UIKIT_EXTERN NSString *const MJRefreshBackFooterNoMoreDataText; UIKIT_EXTERN NSString *const MJRefreshBackFooterNoMoreDataText;
UIKIT_EXTERN NSString *const MJRefreshHeaderLastTimeText;
UIKIT_EXTERN NSString *const MJRefreshHeaderDateTodayText;
UIKIT_EXTERN NSString *const MJRefreshHeaderNoneLastDateText;
// 状态检查 // 状态检查
#define MJRefreshCheckState \ #define MJRefreshCheckState \
MJRefreshState oldState = self.state; \ MJRefreshState oldState = self.state; \
......
...@@ -2,6 +2,7 @@ ...@@ -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 // 代码地址: 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> #import <UIKit/UIKit.h>
const CGFloat MJRefreshLabelLeftInset = 25;
const CGFloat MJRefreshHeaderHeight = 54.0; const CGFloat MJRefreshHeaderHeight = 54.0;
const CGFloat MJRefreshFooterHeight = 44.0; const CGFloat MJRefreshFooterHeight = 44.0;
const CGFloat MJRefreshFastAnimationDuration = 0.25; const CGFloat MJRefreshFastAnimationDuration = 0.25;
...@@ -14,15 +15,19 @@ NSString *const MJRefreshKeyPathPanState = @"state"; ...@@ -14,15 +15,19 @@ NSString *const MJRefreshKeyPathPanState = @"state";
NSString *const MJRefreshHeaderLastUpdatedTimeKey = @"MJRefreshHeaderLastUpdatedTimeKey"; NSString *const MJRefreshHeaderLastUpdatedTimeKey = @"MJRefreshHeaderLastUpdatedTimeKey";
NSString *const MJRefreshHeaderIdleText = @"下拉可以刷新"; NSString *const MJRefreshHeaderIdleText = @"MJRefreshHeaderIdleText";
NSString *const MJRefreshHeaderPullingText = @"松开立即刷新"; NSString *const MJRefreshHeaderPullingText = @"MJRefreshHeaderPullingText";
NSString *const MJRefreshHeaderRefreshingText = @"正在刷新数据中..."; NSString *const MJRefreshHeaderRefreshingText = @"MJRefreshHeaderRefreshingText";
NSString *const MJRefreshAutoFooterIdleText = @"点击或上拉加载更多"; NSString *const MJRefreshAutoFooterIdleText = @"MJRefreshAutoFooterIdleText";
NSString *const MJRefreshAutoFooterRefreshingText = @"正在加载更多的数据..."; NSString *const MJRefreshAutoFooterRefreshingText = @"MJRefreshAutoFooterRefreshingText";
NSString *const MJRefreshAutoFooterNoMoreDataText = @"已经全部加载完毕"; NSString *const MJRefreshAutoFooterNoMoreDataText = @"MJRefreshAutoFooterNoMoreDataText";
NSString *const MJRefreshBackFooterIdleText = @"上拉可以加载更多"; NSString *const MJRefreshBackFooterIdleText = @"MJRefreshBackFooterIdleText";
NSString *const MJRefreshBackFooterPullingText = @"松开立即加载更多"; NSString *const MJRefreshBackFooterPullingText = @"MJRefreshBackFooterPullingText";
NSString *const MJRefreshBackFooterRefreshingText = @"正在加载更多的数据..."; NSString *const MJRefreshBackFooterRefreshingText = @"MJRefreshBackFooterRefreshingText";
NSString *const MJRefreshBackFooterNoMoreDataText = @"已经全部加载完毕"; NSString *const MJRefreshBackFooterNoMoreDataText = @"MJRefreshBackFooterNoMoreDataText";
\ No newline at end of file
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'; ...@@ -57,7 +57,7 @@ static const char MJRefreshFooterKey = '\0';
if (mj_footer != self.mj_footer) { if (mj_footer != self.mj_footer) {
// 删除旧的,添加新的 // 删除旧的,添加新的
[self.mj_footer removeFromSuperview]; [self.mj_footer removeFromSuperview];
[self addSubview:mj_footer]; [self insertSubview:mj_footer atIndex:0];
// 存储新的 // 存储新的
[self willChangeValueForKey:@"mj_footer"]; // KVO [self willChangeValueForKey:@"mj_footer"]; // KVO
......
This diff is collapsed.
PODS: PODS:
- GMRefresh (0.1.4): - GMRefresh (0.1.4):
- MJRefresh (~> 3.1.0) - MJRefresh (~> 3.1.0)
- MJRefresh (3.1.0) - MJRefresh (3.1.12)
DEPENDENCIES: DEPENDENCIES:
- GMRefresh (from `../`) - GMRefresh (from `../`)
...@@ -12,7 +12,7 @@ EXTERNAL SOURCES: ...@@ -12,7 +12,7 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
GMRefresh: 4a1d3332576e7a4d9be742d62fec260fd718e65d GMRefresh: 4a1d3332576e7a4d9be742d62fec260fd718e65d
MJRefresh: 743e6404967d1c2c688472ea3ecfde247d872db4 MJRefresh: b96cdb21c4aa75a7b07654311ab2f315c497e806
PODFILE CHECKSUM: 9e12f3fbdc35e42e007aeabb4d7a97d764319eea PODFILE CHECKSUM: 9e12f3fbdc35e42e007aeabb4d7a97d764319eea
......
This diff is collapsed.
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>FMWK</string> <string>FMWK</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>3.1.0</string> <string>3.1.12</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#import "MJRefreshStateHeader.h" #import "MJRefreshStateHeader.h"
#import "MJRefresh.h" #import "MJRefresh.h"
#import "MJRefreshConst.h" #import "MJRefreshConst.h"
#import "NSBundle+MJRefresh.h"
#import "UIScrollView+MJExtension.h" #import "UIScrollView+MJExtension.h"
#import "UIScrollView+MJRefresh.h" #import "UIScrollView+MJRefresh.h"
#import "UIView+MJExtension.h" #import "UIView+MJExtension.h"
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = "GMRefresh" s.name = "GMRefresh"
s.version = "0.1.4" s.version = "0.1.5"
s.summary = "基于MJRefresh做的下拉刷新,自动加载更多" s.summary = "基于MJRefresh做的下拉刷新,自动加载更多"
s.homepage = "http://git.gengmei.cc/gengmeiios/GMLibrary/GMRefresh" s.homepage = "http://git.gengmei.cc/gengmeiios/GMLibrary/GMRefresh"
s.license = 'MIT' s.license = 'MIT'
......
...@@ -3,34 +3,77 @@ ...@@ -3,34 +3,77 @@
<testsuite name="fastlane.lanes"> <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>
<testcase classname="fastlane.lanes" name="1: default_platform" time="0.000222"> <testcase classname="fastlane.lanes" name="1: default_platform" time="0.000262">
</testcase> </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>
<testcase classname="fastlane.lanes" name="3: hipchat" time="0.04816"> <testcase classname="fastlane.lanes" name="3: hipchat" time="0.04935">
</testcase> </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>
<testcase classname="fastlane.lanes" name="5: hipchat" time="0.049557"> <testcase classname="fastlane.lanes" name="14: hipchat" time="0.525092">
</testcase> </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