【第22期】观点:IT 行业加班,到底有没有价值?

关于信息提示框的问题

原创 2016年05月30日 22:59:30

从app启动开始进行网络请求的时候,网速再快也需要那么一两秒空白期,而这个时间段,大家都会做一个等待动画来安慰一下用户的急躁心理,有好多出名的第三方,比如MBProgressHUD等。大家在一个一个网络请求的时候当然很简单直接add,而当同时两个网络请求?三个?。。。是不是得有好多hub展示在view上?噢唛嘎,简直不忍直视。在这,我很早以前就封装了一套,可以一句话就搞定这些东东,大家只需要傻瓜似的往里加就行。说说思路吧,楼主都是给view写一个分类来管理这些东东,代码在github

思路来自于ARC,当初没有ARC的时候,都是手动管理内存,每个对象都有个计数器,每次retain…等retaincount都会加一而release的时候都会减一,当为0的时候就释放,而我的hud也有一个自己的count,每次show的时候count都会加一,每次dismiss的时候都会减一,当为0的时候就会彻底dismiss,看代码,很清晰

-(void)showRequestNumIndeterminateHubText:(NSString *)text{

    dispatch_async(dispatch_get_main_queue(), ^{
        MBProgressHUDRequestView *hub = (MBProgressHUDRequestView *)[self viewWithTag:REQUESTHUBTAG];
        if (!hub) {
            MBProgressHUDRequestView * hub = [MBProgressHUDRequestView showHUDAddedTo:self animated:NO];
            hub.RequestNum = 1;
            if ([Tools isEmpty:text]) {
                hub.labelText = @"数据加载中...";
            }else{
                hub.labelText = text;
            }
            hub.tag = REQUESTHUBTAG;
            hub.mode = MBProgressHUDModeIndeterminate;
            [hub show:YES];
        }else{
            [hub show:YES];
            hub.RequestNum += 1;
        }

    });
}
-(void)dismissRequestHUD{
    dispatch_async(dispatch_get_main_queue(), ^{
        MBProgressHUDRequestView *hub = (MBProgressHUDRequestView *)[self viewWithTag:REQUESTHUBTAG];
        if (hub && hub.RequestNum > 0) {
            hub.RequestNum -= 1;
        }
        if(hub){
            if (hub.RequestNum == 0 || hub.RequestNum < 0) {
                hub.RequestNum = 0;
                [hub hide:NO];
                hub = nil;
            }
        }
    });

}

每次添加hud的时候只有一个hud展示,每次只是requestcount 加一,记得两个配套使用 , 主要在思路。

再说说每次如果有好几个网络错误或者异常的提示信息怎么办,会不会一堆很恶习的view重叠在一起,让人无处下手,这边,再次说说思路,在分类中创建一个自定义的展示messagelabel,确保,每次同一个view只有一个messagelabel,这个不难,提示都是过n秒消失,这个有好几种写法,我就最简单的perfrom……方法,咱们就在每次展示提示信息的时候进行判断需要展示的内容,如果一样,不用管后面,如果不一样,则取消此次定时事件,重新展示新内容,而messagelabel还是同一个。

-(void)showMessageBottom:(NSString *)message afterDelay:(NSTimeInterval)delay {

    UILabel *oldLabel = [self MessageLabel];
    if (!oldLabel) {
        UILabel *label = [self creatLabel:message];
        label.y = kScreen_Height - 30 - label.height;
        [self performSelector:@selector(disTipLabel) withObject:nil afterDelay:delay];
    }else {
        if ([oldLabel.text isEqualToString: message]){
        return;
        }
        [NSObject cancelPreviousPerformRequestsWithTarget:self];
        oldLabel.text = message;
        [self performSelector:@selector(disTipLabel) withObject:nil afterDelay:delay];
    }
}
/**
 *  移除label
 */
-(void)disTipLabel {
     UILabel * label = (UILabel *)[self viewWithTag:MessageLabel_tag];
    if (label) {
        [label removeFromSuperview];
        label = nil;
    }
}
-(UILabel *)MessageLabel
{
    UILabel * label = (UILabel *)[self viewWithTag:MessageLabel_tag];
    return label;
}

这些都需要配套使用,在哪儿show,就得必须有dismiss,否则要么提前hud或者messageLabel消失,要么永远都在。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

用java制作的简易倒计时器(主要可用于考试系统中考试剩余时间显示)

import java.awt.BorderLayout; import java.awt.Font; import java.text.SimpleDateFormat; import jav...

Form信息提示框的基本使用

Form信息提示框的基本使用 1、message Usage:message('提示信息'); Effect:在FORMS 左下角会出现这个提示信息。 2、fnd_message 用法大全 2.1 F...
  • gh320
  • gh320
  • 2013-12-09 16:30
  • 1369

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

百度搜索框提示功能简单实现

在搜索框中输入的时候会有百度的只能提示。 代码也很简单,整个html只有24行,关键的代码不超过10行。

后台弹出提示信息

1.后台弹出提示信息方法 Response.Write("alert('你所查询的数据不存在!');"); //弹出提示信息,但页面空白 Page.RegisterClientScriptBlock(...

应用程序加入短信提醒功能实现全步骤

在很多应用程序中,特别是企业级 web 应用程序中,有很多时候需要及时提醒用户某些信息。等待用户登录系统后弹出提醒信息,肯定不够及时,不能满足通知及时的需求。如果能够对用户进行短信信息提醒,就可以做到...

Android消息提示方法介绍

Android消息提示有三种方式: 1.使用Toast显示消息提示 Toast用于在屏幕中显示一个提示信息框,该消息提示框没有任何控制按钮,并且不会获得焦点,经过一定时间后自动消失,通常用于显示一...

各种网页提示信息

这几天一直在做界面,突然发现我快要成了搞界面的了,呵呵,当然也遇到了各种各样的问题,比如最常见的404,500,等等,一些特别常见的还好,基本上一看就能知道问题在哪儿,但是对于一些其他的问题,我就发现...

利用html:error和html:message标签实现信息提示

利用html:error和html:message标签实现信息提示需要做三方面的处理:1.jsp页面中的代码片断:table width="100%" align="left" border=0>  ...

asp.net 右下角弹出新提醒信息提示框

asp.net 开发信息系统,无论是OA或者是其它业务系统中,都会用到新信息提醒功能,特此将方案跟大家分享一下。先上一图给大家看一看:优点:1)、该新消息弹出提示框样式算是比较不错的,个人认为。   ...

C#中的MessageBox消息对话框

关键字:C# MessageBox 消息对话框 在程序中,我们经常使用消息对话框给用户一定的信息提示,如在操作过程中遇到错误或程序异常,经常会使用这种方式给用于以提示。在C#中,Messag...
  • li0531
  • li0531
  • 2012-09-14 09:55
  • 7895
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)