基于iOS实现音乐震动条效果

时间:2021-05-02

一、简单分析

音乐震动条不需要与用户交互。我们可以使用复制层来操作。添加震动条。添加动画。

复制层说明

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //创建复制层 -(void)createrepl{ //复制层 careplicatorlayer * repl = [careplicatorlayer layer]; repl.frame = self.contentv.bounds; //复制6份 repl.instancecount = 6; //形变,每一个形变都是相对于上一个复制出来的子层开始的 repl.instancetransform = catransform3dmaketranslation(45, 0, 0); //动画延时执行 repl.instancedelay = 0.5; ///要设置复制层的颜色 原始层的颜色要设为白色. repl.instancecolor = [uicolor redcolor].cgcolor; [self.contentv.layer addsublayer:repl]; self.repl = repl; }

二、代码

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 // // viewcontroller.m // 03_uiview75_音乐震动条 // // created by 杞文明 on 17/7/21. // copyright © 2017年 杞文明. all rights reserved. // #import "viewcontroller.h" @interface viewcontroller () @property (weak, nonatomic) iboutlet uiview *contentv; @property (weak,nonatomic) careplicatorlayer * repl; @property (weak,nonatomic) calayer * layer; @end @implementation viewcontroller - (void)viewdidload { [super viewdidload]; //1.创建复制层次 [self createrepl]; //2.添加音量震动条 [self addvoicebar]; //3.添加动画 [self addanimation]; } //创建复制层 -(void)createrepl{ //复制层 careplicatorlayer * repl = [careplicatorlayer layer]; repl.frame = self.contentv.bounds; //复制6份 repl.instancecount = 6; //形变,每一个形变都是相对于上一个复制出来的子层开始的 repl.instancetransform = catransform3dmaketranslation(45, 0, 0); //动画延时执行 repl.instancedelay = 0.5; ///要设置复制层的颜色 原始层的颜色要设为白色. repl.instancecolor = [uicolor redcolor].cgcolor; [self.contentv.layer addsublayer:repl]; self.repl = repl; } //添加音量震动条 -(void)addvoicebar{ calayer * layer = [calayer layer]; layer.frame = cgrectmake(0, self.contentv.bounds.size.height-150, 30, 150); layer.backgroundcolor = [uicolor whitecolor].cgcolor; layer.position = cgpointmake(0, self.contentv.bounds.size.height); layer.anchorpoint = cgpointmake(0, 1); [self.repl addsublayer:layer]; self.layer = layer; } //添加动画 -(void)addanimation{ //添加动画 对y方向缩放 cabasicanimation * anim = [cabasicanimation animation]; //设置属性 anim.keypath = @"transform.scale.y"; anim.tovalue = @0; anim.repeatcount = maxfloat; anim.autoreverses = yes; anim.duration = 0.5; [self.layer addanimation:anim forkey:nil]; } @end

三、图示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章