博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十六篇、MBprogressHUD的使用和获取当前的控制器
阅读量:5887 次
发布时间:2019-06-19

本文共 3236 字,大约阅读时间需要 10 分钟。

 简介:

  在开发应用的时候,为了更好的增加用户的体验,常常在客户端向服务端请求数据的时候,在适当的地方加上非模态HUD,让用户可以可以知道当前的进度,稍作等待。

  

MBProgressHUD 第三方框架

#import "AppDelegate+HUD.h"#import "MBProgressHUD.h"@implementation AppDelegate (HUD)// 获取当前处于activity状态的view controller (常用于收到异地登录,退出登录的弹窗) - (UIViewController *)activityViewController{    UIViewController* activityViewController = nil;        UIWindow *window = [[UIApplication sharedApplication] keyWindow];        // 如果是模态控制器用这个方法获取    UIViewController *appRootVC = window.rootViewController;    UIViewController *topVC = appRootVC;    if (topVC.presentedViewController) {        topVC = topVC.presentedViewController;        return topVC;    }            if(window.windowLevel != UIWindowLevelNormal)    {        NSArray *windows = [[UIApplication sharedApplication] windows];        for(UIWindow *tmpWin in windows)        {            if(tmpWin.windowLevel == UIWindowLevelNormal)            {                window = tmpWin;                break;            }        }    }        NSArray *viewsArray = [window subviews];    if([viewsArray count] > 0)    {        UIView *frontView = [viewsArray objectAtIndex:0];                id nextResponder = [frontView nextResponder];                if([nextResponder isKindOfClass:[UIViewController class]])        {            activityViewController = nextResponder;        }        else        {            activityViewController = window.rootViewController;        }    }        return activityViewController;}/** * 因为网络请求是在异步线程中执行,只有主线程才可以更新UI */// 显示加载- (void) showHUD:(NSString *)msg{    dispatch_async(dispatch_get_main_queue(), ^{        if ([self.window viewWithTag:88888]) {            [[self.window viewWithTag:88888] removeFromSuperview];        }        MBProgressHUD *HUD = [[MBProgressHUD alloc] initWithView:self.window];        HUD.tag = 88888;        [self.window addSubview:HUD];        HUD.label.text = msg;        HUD.contentColor = [UIColor blackColor];        HUD.label.textColor = [UIColor colorWithRed:254.0/255 green:71.0/255 blue:67.0/255 alpha:1];        [HUD setUserInteractionEnabled:NO]; // 设置成非模态显示        [HUD showAnimated:YES];    });        }// 移除- (void) removeHUD{    dispatch_async(dispatch_get_main_queue(), ^{        [[self.window viewWithTag:88888] hideAnimated:YES];        [[self.window viewWithTag:88888] removeFromSuperViewOnHide];    });        }// 显示信息- (void) showMessage:(NSString *) msg{        dispatch_async(dispatch_get_main_queue(), ^{        [[self.window viewWithTag:88888] hideAnimated:YES];        [[self.window viewWithTag:88888] removeFromSuperViewOnHide];                                MBProgressHUD *HUDText = [MBProgressHUD showHUDAddedTo:self.window animated:YES];        // 设置只是显示文本        HUDText.tag = 88888;        HUDText.mode = MBProgressHUDModeText;        HUDText.label.text = msg;        HUDText.margin = 10.0f;        //    CGPoint currentOffset = HUDText.offset;        //    currentOffset.y = -[UIScreen mainScreen].bounds.size.height / 2 + 80; // 设置Y的起始位置        //    HUDText.offset = currentOffset;        HUDText.removeFromSuperViewOnHide = YES;        [HUDText setUserInteractionEnabled:NO];        [HUDText hideAnimated:YES afterDelay:2.8];    });}

 

转载于:https://www.cnblogs.com/HJQ2016/p/5818154.html

你可能感兴趣的文章
C# LINQ详解(一)
查看>>
视频直播点播nginx-rtmp开发手册中文版
查看>>
ruby学习总结04
查看>>
Binary Tree Paths
查看>>
Ueditor自定义ftp上传
查看>>
线程以及多线程
查看>>
PHP队列的实现
查看>>
单点登录加验证码例子
查看>>
[T-SQL]从变量与数据类型说起
查看>>
稀疏自动编码之反向传播算法(BP)
查看>>
二叉搜索树转换成双向链表
查看>>
WebLogic和Tomcat的区别
查看>>
java类中 获取服务器的IP 端口
查看>>
调用约定__stdcall / __cdecl
查看>>
occActiveX - ActiveX with OpenCASCADE
查看>>
redmine
查看>>
css 序
查看>>
DirectshowLib摄像头拍照的”未找到可用于建立连接的介质筛选器组合“ 解决办法...
查看>>
wcf-1
查看>>
三种简单排序
查看>>