您的位置:首页 > 移动开发 > IOS开发

iOS 第三方框架-MBProgressHUD

2016-03-31 09:39 417 查看
MBProgressHUD提示框官网地址:https://github.com/jdg/MBProgressHUD

官网里已经提供了足够多的例子供我们使用,但在实现开发中,我们用到的只是其中的一小部分而已。为了使用更方便,下面对它进行扩展(Category)

MBProgressHUD+NJ.h

#import "MBProgressHUD.h"

@interface MBProgressHUD (NJ)

+ (void)showSuccess:(NSString *)success;
+ (void)showSuccess:(NSString *)success toView:(UIView *)view;

+ (void)showError:(NSString *)error;
+ (void)showError:(NSString *)error toView:(UIView *)view;

+ (MBProgressHUD *)showMessage:(NSString *)message;
+ (MBProgressHUD *)showMessage:(NSString *)message toView:(UIView *)view;

+ (void)hideHUD;
+ (void)hideHUDForView:(UIView *)view;

@end


MBProgressHUD+NJ.m

#import "MBProgressHUD+NJ.h"

@implementation MBProgressHUD (NJ)

/**
*  显示信息
*
*  @param text 信息内容
*  @param icon 图标
*  @param view 显示的视图
*/
+ (void)show:(NSString *)text icon:(NSString *)icon view:(UIView *)view
{
if (view == nil) view = [[UIApplication sharedApplication].windows lastObject];
// 快速显示一个提示信息
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];
hud.labelText = text;
// 设置图片
hud.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"MBProgressHUD.bundle/%@", icon]]];
// 再设置模式
hud.mode = MBProgressHUDModeCustomView;

// 隐藏时候从父控件中移除
hud.removeFromSuperViewOnHide = YES;

// 1秒之后再消失
[hud hide:YES afterDelay:0.7];
}

/**
*  显示成功信息
*
*  @param success 信息内容
*/
+ (void)showSuccess:(NSString *)success
{
[self showSuccess:success toView:nil];
}

/**
*  显示成功信息
*
*  @param success 信息内容
*  @param view    显示信息的视图
*/
+ (void)showSuccess:(NSString *)success toView:(UIView *)view
{
[self show:success icon:@"success.png" view:view];
}

/**
*  显示错误信息
*
*/
+ (void)showError:(NSString *)error
{
[self showError:error toView:nil];
}

/**
*  显示错误信息
*
*  @param error 错误信息内容
*  @param view  需要显示信息的视图
*/
+ (void)showError:(NSString *)error toView:(UIView *)view{
[self show:error icon:@"error.png" view:view];
}

/**
*  显示错误信息
*
*  @param message 信息内容
*
*  @return 直接返回一个MBProgressHUD,需要手动关闭
*/
+ (MBProgressHUD *)showMessage:(NSString *)message
{
return [self showMessage:message toView:nil];
}

/**
*  显示一些信息
*
*  @param message 信息内容
*  @param view    需要显示信息的视图
*
*  @return 直接返回一个MBProgressHUD,需要手动关闭
*/
+ (MBProgressHUD *)showMessage:(NSString *)message toView:(UIView *)view {
if (view == nil) view = [[UIApplication sharedApplication].windows lastObject];
// 快速显示一个提示信息
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];
hud.labelText = message;
// 隐藏时候从父控件中移除
hud.removeFromSuperViewOnHide = YES;
// YES代表需要蒙版效果
hud.dimBackground = YES;
return hud;
}

/**
*  手动关闭MBProgressHUD
*/
+ (void)hideHUD
{
[self hideHUDForView:nil];
}

/**
*  手动关闭MBProgressHUD
*
*  @param view    显示MBProgressHUD的视图
*/
+ (void)hideHUDForView:(UIView *)view
{
if (view == nil) view = [[UIApplication sharedApplication].windows lastObject];
[self hideHUDForView:view animated:YES];
}

@end


我们可以看到上面的代码,还引用了图标。直接把图标拷过去,最后的源码里有提供。项目结构:



使用方法很非常的简单。

弹框显示成功:

[MBProgressHUD showSuccess:@"测试showSuccess"];


弹框显示失败:

[MBProgressHUD showError:@"测试showError"];


弹框显示加载中:

[MBProgressHUD showMessage:@"正在加载数据中....."];

// 几秒后消失,当然,这里可以改为网络请求
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

// 移除HUD
[MBProgressHUD hideHUD];

// 提醒有没有新数据
[MBProgressHUD showError:@"没有新数据"];
});


部分效果图



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS 第三方 小菊花