1.协议插件
@protocol YTKRequestAccessory <NSObject>
@optional
- (void)requestWillStart:(id)request;
- (void)requestWillStop:(id)request;
- (void)requestDidStop:(id)request;
2.给API请求添加插件功能
- (void)startWithCompletionBlockWithSuccess:(void (^)(YTKBaseRequest *request))success failure:(void (^)(YTKBaseRequest *request))failure {
__block id safeSelf = self;、
[self addAccessory:[DTLoadingIndicator sharedLoadingIndicator]]; //添加HUB并且成为代理
self.successCompletionBlock = ^(YTKBaseRequest *request){
[safeSelf printRequestInfo:request];
success(request);
};
self.failureCompletionBlock = ^(YTKBaseRequest *request){
[safeSelf printRequestInfo:request];
if (request.responseStatusCode==0) {
[MBProgressHUD showMessage:@"网络异常" finishBlock:nil];
}else{
NSString *errorString = [NSString stringWithFormat:@"请求失败, 状态码:%ld",(long)request.responseStatusCode];
[MBProgressHUD showMessage:errorString finishBlock:nil];
}
failure(request);
};
[self start];
}
3.遵循协议的HUB动画
@interface DTLoadingIndicator : UIView<YTKRequestAccessory>
@property (strong, nonatomic) UIImageView *backImage;
+ (DTLoadingIndicator *)sharedLoadingIndicator;
- (void)settingDefault;
- (void)setIndicatorWith:(NSString *)image num:(int)num speed:(float)speed backGroundColor:(UIColor *)backColor color:(UIColor *)color moveViewSize:(float)moveViewSize moveSize:(float)moveSize;
-(void)show;
-(void)hide;
4.HUB动画实现代理方法
- (void)requestWillStart:(id)request{
[self show];
}
- (void)requestWillStop:(id)request{
[self hide];
}