iOS动画之模拟音量振动条
2024-08-31 16:24:19
音量振动条
效果图:
假设实现?
创建3个layer。按顺序播放y轴缩放动画
利用CAReplicatorLayer实现
1、什么是CAReplicatorLayer?
一种能够复制自己子层的layer,而且复制出来的layer和原生子层有相同的属性,位置。形变,动画。
2、CAReplicatorLayer属性
instanceCount
: 子层总数(包含原生子层)instanceDelay
: 复制子层动画延迟时长instanceTransform
: 复制子层形变(不包含原生子层)。每一个复制子层都是相对上一个。instanceColor
: 子层颜色,会和原生子层背景色冲突,因此二者选其一设置。instanceRedOffset、instanceGreenOffset、instanceBlueOffset、instanceAlphaOffset
: 颜色通道偏移量。每一个复制子层都是相对上一个的偏移量。
假设利用CAReplicatorLayer实现
1.首先创建复制layer,音乐振动条layer加入到复制layer上,然后复制子层就好了。
CAReplicatorLayer *layer = [CAReplicatorLayer layer];
layer.frame = CGRectMake(50, 50, 200, 200);
layer.backgroundColor = [UIColor lightGrayColor].CGColor;
[self.view.layer addSublayer:layer];
2.先创建一个音量振动条,而且设置好动画,动画是绕着底部缩放。设置锚点
CALayer *bar = [CALayer layer];
bar.backgroundColor = [UIColor redColor].CGColor;
bar.bounds = CGRectMake(0, 0, 30, 100);
bar.position = CGPointMake(15, 200);
bar.anchorPoint = CGPointMake(0.5, 1);
[layer addSublayer:bar];
CABasicAnimation *anim = [CABasicAnimation animation];
anim.keyPath = @"transform.scale.y";
anim.toValue = @(0.1);
anim.autoreverses = YES;
anim.repeatCount = MAXFLOAT;
[bar addAnimation:anim forKey:nil];
3.复制子层
// 设置4个子层。3个复制层
layer.instanceCount = 4;
// 设置复制子层的相对位置。每一个x轴相差40
layer.instanceTransform = CATransform3DMakeTranslation(40, 0, 0);
// 设置复制子层的延迟动画时长
layer.instanceDelay = 0.3;
Demo实例
最新文章
- webapi 通过dynamic 接收可变参数
- WCF初探-21:WCF终结点(endpoint)
- Git基础 - git blame
- CI框架 输入类
- 最大似然估计(MLE)和最大后验概率(MAP)
- hdu 1392 Surround the Trees
- PySpark调用自定义jar包
- Java发送邮件的简单实现
- swing常用布局
- 需要考虑的9个SEO实践
- 搭建rtmp直播流服务之2:使用java实现ffmpeg命令接口化调用(用java执行ffmpeg命令)
- ztree 获取根节点
- 由清除float原理到BFC
- iTop软件功能分析以及优缺点比较
- 手写数字识别 ----在已经训练好的数据上根据28*28的图片获取识别概率(基于Tensorflow,Python)
- 有道云笔记Markdown上传本地图片的方法
- Debian系统 + XFCE桌面初识,基础环境搭建
- ios OC 关键字 copy,strong,weak,assign的区别
- drawImg、x5浏览器、react
- 小改造gotty,使之适合接收经过一层加密的URL