利用iOS动画来模拟音量振动条的实现
程序员文章站
2022-06-16 13:26:40
ios动画来模拟音量振动条,即利用careplicatorlayer实现,以下将详细的介绍careplicatorlayer和实现方法。
音量振动条
效果图:
如...
ios动画来模拟音量振动条,即利用careplicatorlayer实现,以下将详细的介绍careplicatorlayer和实现方法。
音量振动条
效果图:
如何实现?
创建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;
通过以上对careplicatorlayer的介绍以及利用careplicatorlayer来实现模拟音量振动条的实例的演示,希望对大家有所帮助。
下一篇: 关于SQL子查询的实战演练