☰
DGActivityIndicatorView实战:网络请求Loading遮罩与全局加载动画封装
2026/10/11 17:23:13 网站建设 项目流程

【免费下载链接】DGActivityIndicatorView

DGActivityIndicatorView is a great way to make loading spinners in your application look nicer. It contains 32 different indicator view styles.

项目地址:https://gitcode.com/gh_mirrors/dg/DGActivityIndicatorView
点击查看免费下载

DGActivityIndicatorView 是一款专为 iOS(Objective-C)打造的加载动画库,内置32 种精美 loading 样式,帮你快速为 App 添加网络请求 Loading 遮罩和全局加载动画,彻底告别原生 UIActivityIndicatorView 的单调。

🎯 为什么需要加载动画库?

App 发起网络请求时,用户最怕"没反应"——不知道是卡住了还是在加载。一个清晰的 loading 提示能显著提升体验。但原生UIActivityIndicatorView样式单一,而 DGActivityIndicatorView 一个库就给你 32 种可选动画:

特性说明
🎨 动画数量32 种,含九宫格点、三圈脉冲、沙漏旋转等
🎛️ 自定义能力可自由设置类型、颜色、尺寸,随时切换
⚙️ 底层技术基于CALayer与 Core Animation,流畅省电
📦 接入成本一行 CocoaPods 命令,或把源码文件夹拖进工程即可
📱 系统要求iOS 7.0+,Xcode 6+,支持 ARC

它的核心入口就是 DGActivityIndicatorView.h,所有 32 种动画类型都以枚举形式集中定义,一目了然:

typedef NS_ENUM(NSUInteger, DGActivityIndicatorAnimationType) { DGActivityIndicatorAnimationTypeNineDots, // 九点阵列 DGActivityIndicatorAnimationTypeTriplePulse, // 三环脉冲 DGActivityIndicatorAnimationTypeBallPulse, // 小球脉冲 DGActivityIndicatorAnimationTypeRotatingSandglass, // 沙漏旋转 // …共 32 种 };

🚀 一键安装:两种接入方式

方式一:CocoaPods 安装(推荐)

在项目的 Podfile 中添加依赖后执行安装命令:

pod 'DGActivityIndicatorView' pod install

方式二:手动集成

直接把DGActivityIndicatorView源码文件夹拖入工程并引入头文件即可。源码文件不多,核心就集中在 DGActivityIndicatorView/DGActivityIndicatorView/ 目录下:

git clone https://gitcode.com/gh_mirrors/dg/DGActivityIndicatorView

📝 4步上手:显示一个加载动画

API 设计得非常直白,四步走:

// 1. 创建实例:指定动画类型、颜色、尺寸 DGActivityIndicatorView *indicator = [[DGActivityIndicatorView alloc] initWithType:DGActivityIndicatorAnimationTypeDoubleBounce tintColor:[UIColor whiteColor] size:20.0f]; // 2. 设置 frame indicator.frame = CGRectMake(0.0f, 0.0f, 50.0f, 50.0f); // 3. 添加到视图 [self.view addSubview:indicator]; // 4. 开始动画 [indicator startAnimating];

关键 API 只有三个:

  • startAnimating/stopAnimating:控制动画开关
  • type:动画类型,可随时修改,动画会自动重建(见 DGActivityIndicatorView.m 中的setType:实现)
  • tintColor/size:颜色和尺寸,默认 40pt 白色

🌐 实战一:网络请求 Loading 遮罩

最典型的使用场景:请求发出时展示全屏半透明遮罩 + 动画,回调回来后移除。

- (void)showLoadingMask { UIView *mask = [[UIView alloc] initWithFrame:self.view.bounds]; mask.backgroundColor = [UIColor colorWithWhite:0 alpha:0.4]; [self.view addSubview:mask]; DGActivityIndicatorView *indicator = [[DGActivityIndicatorView alloc] initWithType:DGActivityIndicatorAnimationTypeBallClipRotatePulse tintColor:[UIColor whiteColor] size:40.0f]; indicator.center = mask.center; [mask addSubview:indicator]; [indicator startAnimating]; self.loadingMask = mask; } - (void)dismissLoadingMask { [self.loadingMask.subviews enumerateObjectsUsingBlock:^(__kindof UIView *v, NSUInteger i, BOOL *stop) { if ([v isKindOfClass:[DGActivityIndicatorView class]]) [(DGActivityIndicatorView *)v stopAnimating]; }]; [self.loadingMask removeFromSuperview]; self.loadingMask = nil; }

发起请求时调用showLoadingMask,在成功/失败回调中都调用dismissLoadingMask,就能保证无论请求快慢都不会出现"遮罩卡死"的问题(记得网络层要统一处理成功与失败两条路径)。

🧩 实战二:封装全局加载动画

每个页面都要复制一遍遮罩代码太繁琐,更好的做法是给UIViewController加一个类别,封装成全局 API:

@interface UIViewController (Loading) - (void)dg_showLoading:(DGActivityIndicatorAnimationType)type; - (void)dg_dismissLoading; @end

实现就是把上面的遮罩逻辑搬进类别里,并在view上管理一个全局单例遮罩。之后任何页面都只需一行:

[self dg_showLoading:DGActivityIndicatorAnimationTypeRotatingSandglass]; // 请求完成 [self dg_dismissLoading];

💡 小技巧:全局封装建议做成单例遮罩(同一时间只存在一个),避免多个请求并发时遮罩层层叠加。

🎨 32 种动画怎么选?

仓库自带的示例工程把所有动画排成了 7×5 的预览墙,打开运行即可查看每一种的实际效果(见 ViewController.m 中的activityTypes数组)。选择建议:

使用场景推荐动画类型理由
全屏请求遮罩BallClipRotatePulse/TripleRings圆形线条,中心留白,辨识度高
列表刷新、短加载NineDots/BallPulse点阵呼吸感,轻巧不抢眼
耗时操作(上传/导出)RotatingSandglass/LineScalePulseOut节奏明确,暗示"需要耐心"
深色背景BallRotate(白色 tintColor)线条简洁,对比强烈

想自己扩展动画?只需让新类实现 DGActivityIndicatorAnimationProtocol.h 中的协议方法setupAnimationInLayer:withSize:tintColor:,并在 DGActivityIndicatorView.m 的工厂方法里注册即可。所有动画类共享的动画基类见 DGActivityIndicatorAnimation.h。

⚠️ 常见坑与注意事项

  1. 别忘了停止:stopAnimating会在停止时隐藏视图;请求超时或取消时同样要调用,否则用户会看到一直转的动画。
  2. 主线程调用:视图操作必须在主线程,网络回调若不在主线程请先 dispatch 回主线程。
  3. 尺寸与 frame:动画尺寸由size参数决定内部绘制,外层frame控制占位,两者建议一致。
  4. 依赖说明:库仅依赖 UIKit / Foundation,包体积极小(见 DGActivityIndicatorView.podspec)。

📚 总结

DGActivityIndicatorView 用极小的体积解决了 iOS 加载体验的"颜值"问题:32 种动画、4 行代码上手、1 行依赖接入。配合本文的"网络请求遮罩 + 全局封装"两个实战方案,你可以快速为项目搭建统一、专业的加载体验。更多细节可查阅官方说明 README.md。

【免费下载链接】DGActivityIndicatorView

DGActivityIndicatorView is a great way to make loading spinners in your application look nicer. It contains 32 different indicator view styles.

项目地址:https://gitcode.com/gh_mirrors/dg/DGActivityIndicatorView
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询