博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
音频输入大小变化图
阅读量:6417 次
发布时间:2019-06-23

本文共 1926 字,大约阅读时间需要 6 分钟。

接上文。这是当音频输入后用一个表示音频输入的大小变化的view

这个没有什么可以说的,直接上代码

#import 
@interface AVMeterView : UIView { float peakPowerForChannel; float h;}@property(nonatomic,assign) float peakPowerForChannel;- (id)initWithFrame:(CGRect)frame;@end
#import "AVMeterView.h"#import 
#import
@implementation AVMeterView@synthesize peakPowerForChannel;- (void)dealloc { [ super dealloc ];}- (id)initWithFrame:(CGRect)frame { self = [ super initWithFrame: frame ]; if (self != nil) { self.backgroundColor = [UIColor clearColor]; h = 100; self.layer.cornerRadius = 8; self.layer.masksToBounds = YES; } return self;}- (void)drawRect:(CGRect)rect { CGRect viewBounds = self.bounds; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextClearRect(context, viewBounds); CGContextSetFillColor(context, CGColorGetComponents([UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.5].CGColor)); CGContextFillRect(context, viewBounds); CGContextSetLineWidth(context,5); CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor); if (peakPowerForChannel > 50) { peakPowerForChannel = 50; } for (int i= 20; i <= peakPowerForChannel * 1.2; i = i+ 10) { float hs = sqrtf(2) * i; float p = h/sqrtf(2); float p1 = (hs)/2; CGContextMoveToPoint(context,p - p1,h - p1); CGContextAddArcToPoint(context,p,h - hs,p + p1,h - p1,i); } CGContextStrokePath(context); // add image CGContextTranslateCTM(context, 0, viewBounds.size.height); CGContextScaleCTM(context, 1, -1); UIImage *image = [UIImage imageNamed:@"mike.png"]; CGFloat x = self.bounds.size.width - image.size.width; CGContextDrawImage(context, CGRectMake(x*0.5,10, 34, 44), image.CGImage);}@end

出来的图片就是中间那部分。其实啪啪和微信都差不多是这样子做的,很简单的。

 

转载于:https://www.cnblogs.com/chinaxxren/archive/2013/01/16/ios.html

你可能感兴趣的文章
Bulk 异常引发的 Elasticsearch 内存泄漏
查看>>
Java 8 Stream
查看>>
Android6 0新应用权限管理机制详解
查看>>
leetCode 6 ZigZag Conversion
查看>>
作为一位Java架构师需要点亮的那些技能树
查看>>
一个行为标准Popup组件(vue), 强大的过度动画支持, 和定位支持
查看>>
移动端适配知识你到底知多少
查看>>
Java基础笔记16
查看>>
TiDB 在 G7 的实践和未来
查看>>
重新认识javascript对象(三)——原型及原型链
查看>>
Java Memory Model文档资源整理
查看>>
小学生学“数学”
查看>>
Dubbo下一站:Apache顶级项目
查看>>
数据库实验3 数据定义语言DDL
查看>>
【Vue】组件使用之参数校验
查看>>
FastDFS蛋疼的集群和负载均衡(十七)之解决LVS+Keepalived遇到的问题
查看>>
深入剖析Redis系列(二) - Redis哨兵模式与高可用集群
查看>>
上班第一天的BUG居然是chrome翻译功能导致的
查看>>
Android 用于校验集合参数的小封装
查看>>
iOS混合开发库(GICXMLLayout)七、JavaScript篇
查看>>