iOS - 网络数据加载等待页面的简单实现

原创 2015年11月17日 23:37:41

iOS系统提供的加载等待控件UIActivityIndicatorView(传说中的菊花), 有时候难免有点单调生涩. 故在此简单封装了一下:

#import <UIKit/UIKit.h>

#define kSideWidth 80
#define kSideHeight 80

#define kCornerRadius 5

#define kLoadingTime 5

#define kTips "数据努力加载中"

#define kTipsTimeInterval 0.5

typedef void (^failedBlock)(void);


typedef NS_ENUM(NSInteger, MHPopViewType) {
    MHPopViewTypeFullScreen,
    MHPopViewTypeWrapContent,
    MHPopViewTypeFullScreenWithTips,
    MHPopViewTypeWrapContentWithTips,
    MHPopViewTypeTips,
};


@interface MHProgress : UIView
- (instancetype)initWithType:(MHPopViewType)type;

- (instancetype)initWithType:(MHPopViewType)type failedBlock:failedBlock;
- (void)showLoadingView;
- (void)closeLoadingView;
- (void)showTips:(NSString *)tips intInterval:(CGFloat)timeInterval;

@end

MHPopViewType:



还有两种就是只显示菊花, 没有提示的文字.

提供的接口也很简单, 初始化的时候带上定义好的type就OK, 然后就是对应的显示方法, 不用解释, 字面意思就够了. 

需要注意的一点是, 有个init方法会有传入一个空得Block, 这个Block中的代码块是在规定显示时间(kLoadingTime)显示完之后执行的. 举个栗子吧:

在进行网络请求数据之前, 为了阻止用户对UI的操作, 定义一个MHProgress, 然后把它show出来. 当网络数据请求过来的时候, 就可以close掉它. 但这只是理想情况, 当网络状况不是很好地时候, 这个时候就不能让它一直show着, 一般采取的做法是, 给它了固定的显示时间(kLoadingTime), 超出这个时间就可以假定网络请求"失败"了. 这时, 对"失败"情况的处理就各取所需了, 可以AlertView一下, 也可以showtips一下. 这些处理就可以在Block中进行.

目前封装的还有些问题, 比如在实例化一个实例之后, 先对它进行showLoading操作, 再进行showTips操作, 这个时候显示就会有问题. 因为是同一个实例, 在实现的时候会对全局变量有更改, 所以只能定义两个实例, 对这两个操作分开进行. 这点读者也可以进行改善.

源码下载

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

相关文章推荐

IOS系统中网络等待的Loading的实现方法 等待加载

IOS系统中网络等待的Loading的实现方法 等待加载

ios开发之简单实现loading动画效果

最近有朋友we'w

IOS开发UI篇之──自定义加载等待框(MBProgressHUD)

原文地址http://www.189works.com/article-89289-1.html MBProgressHUD 下载地址是: http://github.com/matej/MBP...
  • xunyn
  • xunyn
  • 2012-10-12 15:59
  • 5095

实现iOS中发起异步网络请求,需要等待其返回的数据才能执行下一步操作

项目中需求,需要发起一个异步网络请求,等待请求数据回来后才可以进行之后的操作。 首先,定义一个BOOL类型的requestEndFlag,当网络数据回来的时候将endFlag置为YES,然后将下面的代...

IOS--─自定义加载等待框(MBProgressHUD)

开发UI篇之──自定义加载等待框(MBProgressHUD) 阿里云携手开源中国众包平台发布百万悬赏项目 »   原文地址http://www.189work...

IOS异步获取数据并刷新界面dispatch_async的使用方法

在ios的开发和学习中多线程编程是必须会遇到并用到的。 在java中以及Android开发中,大量的后台运行,异步消息队列,基本都是运用了多线程来实现。  同样在,在ios移动开发和Android...

iOS应用程序启动时所有方法的调用顺序

转载自:http://www.cnblogs.com/dsxniubility/p/4322525.html 一个应用程序的启动过程要包括代理的创建,控制器的加载和控制器view...

无网或断网提示,自定义界面(UIView分类,使用方便)

由于项目中需要添加无网或者断网条件下的提示界面,所以就简单的写了一个提示的界面.记得之前在一份源码中见过类似的场景,但是忘了是哪一个了,也没有找到.因为项目中多数界面都使用到这个无网提示界面,包含控制...
  • hu9134
  • hu9134
  • 2016-05-11 16:08
  • 1577

在ios 设备没有网络的情况下在app中如何弹出设置无线网络的提示框

在ios设备没有网络的情况下,在app中如何弹出设置无线网络的提示框 这种情况基本上有两种解决方案 方案一: 适用范围:ios5.0及之前的iOS版本 方法:这是一个广为流传的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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