iOS 实现简单的加载等待动画示例(思路与实现)
发布时间 - 2026-01-11 01:06:37 点击率:次先看下最后基本要实现的效果

总结一下自己的实现思路与所用到的类
1.这个肯定是要自定义的View类,起名为XDColorCircle吧,最后用的时候达到这样的效果
//创建XDColorCircle的实例化对象 XDColorCircle *circle=[[XDColorCircle alloc]initWithFrame:CGRectMake(0 ,100,self.view.frame.size.width,200)]; //添加到视图上展示 [self.view addSubview:circle];
2.然后就是在XDColorCircle里面代码思路
- 需要先有一个渐变的图层(渐变由白到靛)且图层需只显示一个圆圈形状
- 渐变图层用CAGradientLayer这个类绘制
- 为这个CAGradientLayer的mask赋值一个圆圈的图层让它只展示一个圆圈CAShapeLayer
- 为CAGradientLayer图层添加基础动画就用CABasicAnimation来实现图层的旋转
- 中间需要一个大Label但肯定这个Label不能绘制在这个CAGradientLayer所在的图层之上了,因这个图层设置mask了 怎么绘制都显示个圈 ╮( ̄▽ ̄"")╭
- 所以最后确定了圈圈应该在另创建一个View上绘制然后与中间的Label一同做为XDColorCircle的子视图
3.思路捋顺代码就很方便
//先都写在这个构造方法里面吧
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
创建圈圈所在的View
self.backgroundColor=[UIColor clearColor];
UIView *circleView=[[UIView alloc]init];
circleView.frame=CGRectMake(0, 0,frame.size.width,frame.size.height);
circleView.backgroundColor=[UIColor blueColor];
[self addSubview: circleView];
创建渐变图层并添加到圈圈视图
CAGradientLayer * gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = @[(__bridge id)[UIColor whiteColor].CGColor,(__bridge id)[UIColor cyanColor].CGColor];
gradientLayer.locations = @[@0.2,@1.0];
gradientLayer.startPoint = CGPointMake(0, 0);
gradientLayer.endPoint = CGPointMake(1.0, 0);
gradientLayer.frame =CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
[circleView.layer insertSublayer:_gradientLayer atIndex:0];
添加mask属性只让图层只显示一个圈圈
CAShapeLayer *layer=[[CAShapeLayer alloc]init];
CGMutablePathRef pathRef=CGPathCreateMutable();
CGPathAddRelativeArc(pathRef, nil,frame.size.width/2.0,frame.size.height/2.0,frame.size.width<frame.size.height?frame.size.width/2.0-5:frame.size.height/2.0-5,0, 2*M_PI);
layer.path=pathRef;
layer.lineWidth=5;
layer.fillColor=[UIColor clearColor].CGColor;
layer.strokeColor=[UIColor blackColor].CGColor;
CGPathRelease(pathRef);
circleView.layer.mask=layer;
让圈圈转起来添加动画
CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; ;
// 设定动画选项
animation.duration = 1;
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
animation.repeatCount =HUGE_VALF;
// 设定旋转角度
animation.fromValue = [NSNumber numberWithFloat:0.0]; // 起始角度
animation.toValue = [NSNumber numberWithFloat:2 * M_PI]; // 终止角度
[circleView.layer addAnimation:animation forKey:@"rotate-layer"];
添加中间的大文字Label
UILabel *label=[[UILabel alloc]init];
label.text=@"测试中";
label.font=[UIFont systemFontOfSize:32];
label.textAlignment=NSTextAlignmentCenter;
label.frame=CGRectMake(0, 0,frame.size.width,frame.size.height);
label.backgroundColor=[UIColor clearColor];
[self addSubview:label];
4.然后在controller里面使用
//创建XDColorCircle的实例化对象 XDColorCircle *circle=[[XDColorCircle alloc]initWithFrame:CGRectMake(0 ,100,self.view.frame.size.width,200)]; //添加到视图上展示 [self.view addSubview:circle];
只是个简单的动画实现小例子,可以看出活用CAShapeLayer和CABasicAnimation可以做出更炫的动画效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# ios
# 加载等待动画
# 图片加载等待动画
# 加载动画实现思路
# IOS等待时动画效果的实现
# iOS实现滚动字幕的动画特效
# IOS绘制动画颜色渐变折线条
# IOS 圆球沿着椭圆轨迹做动画
# iOS渐变圆环旋转动画CAShapeLayer CAGradientLayer
# iOS 进度条、加载、安装动画的简单实现
# iOS 水波纹动画的实现效果
# IOS 实现3D 浮动效果动画
# iOS实现数字倍数动画效果
# 图层
# 在这个
# 只显示
# 自己的
# 是个
# 上了
# 自定义
# 可以看出
# 就用
# 来实现
# 很方便
# 创建一个
# 先看
# 它只
# 大家多多
# 都写
# 有一个
# 出更
# 就是在
# 确定了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在阿里云ECS服务器部署织梦CMS网站?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
无锡营销型网站制作公司,无锡网选车牌流程?
如何快速生成可下载的建站源码工具?
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
如何注册花生壳免费域名并搭建个人网站?
EditPlus中的正则表达式 实战(1)
Linux后台任务运行方法_nohup与&使用技巧【技巧】
如何实现javascript表单验证_正则表达式有哪些实用技巧
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
Laravel如何处理异常和错误?(Handler示例)
网站制作企业,网站的banner和导航栏是指什么?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
php 三元运算符实例详细介绍
微信小程序 scroll-view组件实现列表页实例代码
公司网站制作需要多少钱,找人做公司网站需要多少钱?
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
如何快速生成高效建站系统源代码?
如何用虚拟主机快速搭建网站?详细步骤解析
如何用y主机助手快速搭建网站?
在线教育网站制作平台,山西立德教育官网?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
教你用AI润色文章,让你的文字表达更专业
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
Laravel如何实现API速率限制?(Rate Limiting教程)
Python进程池调度策略_任务分发说明【指导】
佛山企业网站制作公司有哪些,沟通100网上服务官网?
如何彻底删除建站之星生成的Banner?
详解Android——蓝牙技术 带你实现终端间数据传输
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
魔毅自助建站系统:模板定制与SEO优化一键生成指南
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
公司门户网站制作流程,华为官网怎么做?
非常酷的网站设计制作软件,酷培ai教育官方网站?
MySQL查询结果复制到新表的方法(更新、插入)
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
JavaScript如何实现音频处理_Web Audio API如何工作?
如何用wdcp快速搭建高效网站?
深圳网站制作培训,深圳哪些招聘网站比较好?
常州企业网站制作公司,全国继续教育网怎么登录?
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
清除minerd进程的简单方法
如何在阿里云服务器自主搭建网站?

