在这里我会有2种对MBProgressHUD.h的封装,一般情况会放到工程的BaseViewController中去,
1种是弹框覆盖全屏,2是弹框后导航栏上按钮可点击
首先文件.h中声明方法
@interface BaseViewController : UIViewController
/**
* 显示提示弹框,文字为1行尽量简短,及显示时间,一般用于提示语,
*
* @param aTipMessage 需要显示的文字
* @param holdTime 显示时间
* @param isFullScreen 是否屏幕展示,yes覆盖导航栏,导航栏按钮不可点击,no导航栏按钮可以点击
*/
- (void)showHUDTip:(NSString*)aTipMessage holdTime:(NSTimeInterval)holdTime andIsFullScreen:(BOOL)isFullScreen;
/**
* 显示文字弹框有主次之分,主要文字在上方,次要在下,和显示时间,次要文字可显示多行,如果文字过长的话,可以选择此方法,
*
* @param aTip 主要文字
* @param aMessage 次要文字
* @param holdTime 显示时间
* @param isFullScreen 是否屏幕展示,yes覆盖导航栏,导航栏按钮不可点击,no导航栏按钮可以点击
*/
- (void)showHUDTip:(NSString*)aTip withMessage:(NSString*)aMessage holdTime:(NSTimeInterval)holdTime andIsFullScreen:(BOOL)isFullScreen;
/**
* 显示指示器及文字,带风火轮,下方为文字,一般用于网络请求时添加,记得请求完成后,无论成功还是失败,一定要调用隐藏指示器方法
*
* @param aTipMessage 风火轮下需要显示的文字
* @param isFullScreen 是否屏幕展示,yes覆盖导航栏,导航栏按钮不可点击,no导航栏按钮可以点击
*/
- (void)showHUDIng:(NSString*)aTipMessage andIsFullScreen:(BOOL)isFullScreen;
/**
* 隐藏指示器,显示指示器后,一定要注意调用隐藏指示器的方法
*/
- (void)hideHUD;
@end
然后需要在文件的.m中实现方法
首先引入头文件
#import "MBProgressHUD.h"
@interface BaseViewController ()
/**
* 不包含导航指示器
*/
@property (nonatomic) MBProgressHUD * progressHUD;
/**
* 全屏指示器
*/
@property (nonatomic) MBProgressHUD * progressHUDFullScreen;
@end
@implementation BaseViewController
- (MBProgressHUD *)progressHUDFullScreen
{
if (!_progressHUDFullScreen) {
_progressHUDFullScreen = [[MBProgressHUD alloc] init];
_progressHUDFullScreen.dimBackground = YES;
[self.view.window addSubview:_progressHUDFullScreen];//这里需要注意,添加到Window上是覆盖全屏的
}
return _progressHUDFullScreen;
}
- (MBProgressHUD *)progressHUD
{
if(_progressHUD)
{
return _progressHUD;
}
//指示器
_progressHUD = [[MBProgressHUD alloc] init];
_progressHUD.dimBackground = YES;
[self.view addSubview:_progressHUD];
return _progressHUD;
}
#pragma -mark-----------------------------------下面为显示提示框方法----------------------------------------------
#pragma mark - 显示提示
- (void)showHUDTip:(NSString*)aTipMessage holdTime:(NSTimeInterval)holdTime andIsFullScreen:(BOOL)isFullScreen
{
MBProgressHUD * hud = isFullScreen ? self.progressHUDFullScreen :self.progressHUD;
hud.mode = MBProgressHUDModeText;
hud.labelText = aTipMessage;
hud.detailsLabelText = nil;
[hud show:YES];
[hud hide:YES afterDelay:holdTime];
}
//显示指示器
- (void)showHUDIng:(NSString*)aTipMessage andIsFullScreen:(BOOL)isFullScreen
{
MBProgressHUD * hud = isFullScreen ? self.progressHUDFullScreen :self.progressHUD;
hud.detailsLabelText = nil;
hud.mode = MBProgressHUDModeIndeterminate;
hud.labelText = aTipMessage;
[hud show:YES];
}
//显示提示
- (void)showHUDTip:(NSString*)aTip withMessage:(NSString*)aMessage holdTime:(NSTimeInterval)holdTime andIsFullScreen:(BOOL)isFullScreen
{
MBProgressHUD * hud = isFullScreen ? self.progressHUDFullScreen :self.progressHUD;
hud.mode = MBProgressHUDModeText;
hud.labelText = aTip;
hud.detailsLabelText = aMessage;
[hud show:YES];
[hud hide:YES afterDelay:holdTime];
}
//隐藏指示器
- (void)hideHUD
{
[self.progressHUD hide:YES afterDelay:0];
[self.progressHUDFullScreen hide:YES afterDelay:0];
}