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

自定义UIActivityIndicatorView(风火轮) 经典的自定义UIActivityIndicatorView的demo,使用第三方库,方便简单 立即下载

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-可自定义加载网络图片方式的无限轮播.zip 不依赖任何第三方库,使用了block将加载网络图片的方式交给了使用者, 你可以自由的选择第三方库来加载网络图片, 实现了无限循环滚动,支持标题,支持调整pageControl位置,代码更新:https://github.com/jasnig 立即下载

相关推荐

仿ios的菊花转等待框

一个简单的仿ios菊花转动等待加载框 轻松复用 只需继承baseactivity 或者单独抽出来调用

iOS 开发之 为UIButton添加类别方法加载网络图片

UIButton+WebCache.h   #import     // 为Button添加类别方法   @interface UIButton (WebCache)     - (void)xr_setButtonImageWithUrl:(NSString *)urlStr;   @end   UIButto

糖醋里脊 4688

不到200块!手把手教你用ZYNQ7010和AD9363攒一台自己的开源SDR硬件(附BOM清单)

本文详细介绍了如何用不到200元的预算,基于ZYNQ7010 FPGA和AD9363射频芯片打造一台功能完备的开源SDR硬件平台。从核心组件选型、PCB设计到焊接调试,提供全流程实战指南,特别适合预算有限的硬件爱好者和创客群体探索无线通信世界。

weixin_26854829的博客 479

iOS开发(OC)——一句话搞定加载等待动画

.h文件 #import &amp;amp;amp;lt;UIKit/UIKit.h&amp;amp;amp;gt; //加载的状态(加载中,加载成功,加载失败) typedef enum : NSUInteger { Loading_suffix, Success_suffix, Faild_suffix, } RequestResult; @interface JZLoadingViewPacket : UI...

菜鸟历程 3987

一文读懂,WMS仓库管理系统模块功能

对于仓库管理人员来说,仓储管理是一件需要十分负责、又精细化的工作。

深蓝易网的博客 5219

3D打印机之Marlin固件配置

一、Marlin固件必要配置 打开Configuration.h文件,使用VS code的搜索功能来修改下面的参数。 配置波特率 #define BAUDRATE 250000 配置串口波特率,一般不修改。上位机的波特率要和这个一致才能正常通讯。 2. 配置主板类型 第 134 行 #define MOTHERBOARD BOARD_MKS_GEN_L 找到 boards.h 这个文件打开,就可以看到支持的主板类型。3d打印机主控板类型非常多,每个板子硬件连接都可能不同,所以这个参数必须要跟你自己的板子

acktomas的博客 2万+

开源项目推荐:加载按钮集合 - Loading Buttons

开源项目推荐:加载按钮集合 - Loading Buttons 在移动应用开发中,为用户提供流畅且美观的交互体验是至关重要的。今天,我们来探索一个专为iOS平台打造的炫酷组件 —— Loading Buttons。这是一套由Swift编写的加载按钮,它不仅提升了应用的视觉吸引力,还优化了用户体验。让我们深入了解一下这个让应用界面瞬间鲜活起来的神器。 项目介绍 Loading Buttons 是一套...

gitblog_00371的博客 677

手把手教你理解ARM SoC中的PPU:电源管理IP的配置与实战避坑指南

本文深入解析ARM SoC中的PPU(Power Policy Unit)电源管理IP,提供详细的配置指南与实战避坑技巧。从PPU基础架构、寄存器配置到与PCSM的协同工作,全面介绍如何优化电源管理策略,解决常见配置误区,并分享高级调试与性能优化方法,助力工程师提升低功耗SoC设计效率。

weixin_28693447的博客 481

iOS 开发:上拉加载,下拉刷新

iOS 开发:上拉加载,下拉刷新 本讲内容: /* 1.数据加载中的提示视图(菊花图); 2.数据的下拉加载; 3.数据的上拉刷新; */ 注:本讲内容需要两个第三方类包,提示视图需要:MBProgressHUD包;刷新加载需要:MJRefresh/MJRefresh-master包,分别对应ARC与MRC,当然也可以混合使用,只需-fobjc-arc; 1.数据加载中的提

Dongxk的博客 1883

高项备考论文:规划绩效域

高项备考论文:规划绩效域

liuxu324的博客 1128

Vue - 解决 Property or method “__v_isRef“ is not defined on the instance but referenced(浏览器控制台报错,代码没错)

vue,vue2控制台报错,vue报错Propertyormethod"__v_isRef"isnotdefinedontheinstancebutreferenced,vue代码没问题,但是报错Propertyormethod"__v_isRef"isnotdefinedontheinstancebutreferenced,vue2如何解决报错,vue怎么解决报错问题,vue2Propertyormethod"__v_isRef"isnotdefi

🏆 前端领域优质创作者 4501

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

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

sammyieveo的专栏 6400

基于MATLAB的最大重叠离散小波变换(MODWT)算法详解

最大重叠离散小波变换(Maximal Overlap Discrete Wavelet Transform, MODWT)是DWT的重要改进形式,由Percival和Walden等人在20世纪90年代系统提出并完善。MODWT通过消除下采样操作,采用样本平移不变的分解方式,解决了DWT的多个固有缺陷。MODWT的核心创新在于取消下采样环节。与DWT每级分解后对滤波输出进行二分下采样不同,MODWT在每一级都使用相同的滤波器,但通过插入零值的方式调整滤波器系数,保持每级系数数量与原始信号相同。

qq_42212808的博客 115

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

项目中需求,需要发起一个异步网络请求,等待请求数据回来后才可以进行之后的操作。 首先,定义一个BOOL类型的requestEndFlag,当网络数据回来的时候将endFlag置为YES,然后将下面的代码粘贴到网络请求的下方即可。如果网络请求一直没回来,你会发现运行的代码会一直在执行卡在下面的代码块中,并且不会卡住UI画面。 - (void)waitingRequestEnd { if

四分之一工程师的博客 9122

【ACP】2025-最新-疑难题解析- 练习二汇总

全球加速是优化公网访问的,负载均衡是分发流量的,公网 NAT 网关是处理公网 IP 的,高速通道是建私网连接但不直接提供固定私网地址功能。C 是客户端加密方式,D 是 ECS 云盘加密,都不属于 OSS 服务器端加密。某企业想使用云服务器 ECS + 负载均衡 SLB + 弹性伸缩 (Auto Scaling) 的架构搭建一个企业级门户网站,技术负责人对于负载均衡和弹性伸缩配合使用没有经验,于是将他理解的两种产品配合使用的一些技术细节列成了一个表单,并请作为架构师的您帮他做一下鉴别,以下哪些项是正确的?

jundao1997的专栏 296

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

转载: iOS 优雅的处理网络数据

原文链接:https://juejin.cn/post/6952682593372340237

yueliangmua的博客 1636

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

iOS网络加载启动图

//这一步是获取LaunchScreen.storyboard里的UIViewController,UIViewController 的identifer是LaunchScreen     UIViewController *viewController = [[UIStoryboard storyboardWithName:@"LaunchScreen" bundle

今天明天 7034

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ios首次加载web_浅淡iOS app加载h5页面

前言由于目前的工作中,原生app大量嵌入h5页面,很多的功能需要h5来实现,但是由于h5需要从网络加载,在弱网状态或者请求资源大的时候必然出现白屏,再网上搜索后发现并没有一个通用的解决方案,其中VasSonic(手Q的解决方案)侵入性太大,需要整个框架更换成本太大,经过一段时间的实践特总结优化的思路。总结下主要优化的地方有三块,webview初始化的时间优化,静态资源加载的优化, 数据请求前展示的...

weixin_42157556的博客 799

ios首次加载web_iOS预加载Web页面方案

iOS预加载Web页面方案可以预加载多个网址,然后在离线状态去显示那几个网址,看看是不是都完全缓存下来了。使用方法在需要开启预加载的地方创建self.sCache = [STMURLCache create:^(STMURLCacheMk *mk) {mk.whiteListsHost(whiteLists).whiteUserAgent(@"starming");}];这里是所有可设置项目,默认...

weixin_39789101的博客 522

iOS APP中数据加载的6种方式

我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态。那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以轻松自在的享受等待,对加载后的内容有明确的预期呢?今天这篇文章,会介绍6种常见的加载模式设计,和3种减少等待感的具体手法,希望对追求极致体验的产品人有帮助。 一、6种常见的数据加载模式

rushiboruo的博客 555

iOS Skeleton Screen加载占位图

前言: APP从加载请求到数据显示在界面上,需要网络相应的时间,大部分处理时添加菊花转圈等待打发这段时间,但是似乎有一种更加好的方式,就是Skeleton Screen Loading。 复制代码 什么是 Skeleton Screen Loading: 所谓Skeleton Screen Loading即表示在页面完全渲染完成之前,用户会看到一个样式简单,描绘了当前页面的大致框...

weixin_34391445的博客 875

iOS 中异步数据的加载

在iOS中经常需要从网络获取数据然后显示在视图中,往往视图数据会先加载,之后网络获取的数据才会传过来,然后重新在视图中显示,这就是异步数据加载,ios中实现异步数据加载有两种常用的方法: 1.在简单的应用程序中,只需要在controller中实现即可,让controller服从网络协议,在requestdidfinishload中加载视图数据即可。 2.在比较复杂的应用程序中(典型得mvc模式

3433
上一篇: iOS - Umeng分享
下一篇: Mac 使用技巧之-使用brew安装软件
Micro90
博客等级 码龄12年 12粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值