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

发布时间 - 2026-01-11 02:27:45    点击率:

一、简单分析

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

复制层说明

//创建复制层
-(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;
}

二、代码

//
// 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

三、图示

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


# iOS  # 音乐  # 震动条  # iOS中关于Taptic-Engine震动反馈的深入解析  # IOS开发实现手机震动的提示实例代码  # iOS仿微信摇一摇动画效果加震动音效实例  # iOS中震动反馈(UIFeedbackGenerator)与系统震动详解  # 都是  # 设为  # 相对于  # 不需要  # 可以使用  # 大家多多  # reserved  # import  # ViewController  # addSublayer  # CGColor  # instanceColor  # Created  # redColor  # UIColor  # Copyright  # copy  # 文明  # rights  # createRepl 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么清理缓存_Laravel optimize clear命令详解  如何在云主机上快速搭建多站点网站?  深圳网站制作的公司有哪些,dido官方网站?  如何在IIS中配置站点IP、端口及主机头?  如何为不同团队 ID 动态生成多个“认领值班”按钮  ,网页ppt怎么弄成自己的ppt?  如何快速生成专业多端适配建站电话?  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  如何获取上海专业网站定制建站电话?  制作旅游网站html,怎样注册旅游网站?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何用虚拟主机快速搭建网站?详细步骤解析  音响网站制作视频教程,隆霸音响官方网站?  如何将凡科建站内容保存为本地文件?  Laravel如何实现一对一模型关联?(Eloquent示例)  如何在建站主机中优化服务器配置?  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  iOS验证手机号的正则表达式  Laravel如何使用.env文件管理环境变量?(最佳实践)  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  佛山企业网站制作公司有哪些,沟通100网上服务官网?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  如何用VPS主机快速搭建个人网站?  Laravel Docker环境搭建教程_Laravel Sail使用指南  如何选择PHP开源工具快速搭建网站?  详解CentOS6.5 安装 MySQL5.1.71的方法  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  JS碰撞运动实现方法详解  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  香港服务器租用每月最低只需15元?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  如何用搬瓦工VPS快速搭建个人网站?  香港服务器选型指南:免备案配置与高效建站方案解析  韩国服务器如何优化跨境访问实现高效连接?  浅谈javascript alert和confirm的美化  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  如何用wdcp快速搭建高效网站?  如何在IIS管理器中快速创建并配置网站?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  如何快速登录WAP自助建站平台?  Laravel中的withCount方法怎么高效统计关联模型数量  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)