旋转的风车(声音越大转速越快)

添加AVFoundation.framework库文件

1 #import <UIKit/UIKit.h>
2
3 @interface AppDelegate : UIResponder <UIApplicationDelegate>
4
5 @property (strong, nonatomic) UIWindow *window;
6
7
8 @end
 1 #import "AppDelegate.h"
 2 #import "RootViewController.h"
 3 @interface AppDelegate ()
 4
 5 @end
 6
 7 @implementation AppDelegate
 8
 9
10 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
11     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
12     // Override point for customization after application launch.
13     self.window.backgroundColor = [UIColor whiteColor];
14
15     self.window.rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
16
17     [self.window makeKeyAndVisible];
18     return YES;
19 }
20
21
22 @end
 1 #import <UIKit/UIKit.h>
 2 #import <AVFoundation/AVFoundation.h>
 3 @interface RootViewController : UIViewController
 4 {
 5     @private
 6     AVAudioRecorder *recorder;
 7     NSTimer *levelTimer;
 8     double lowPass;
 9 }
10 @property (weak, nonatomic) IBOutlet UIImageView *fan;
11
12 @end
 1 #import "RootViewController.h"
 2
 3 @interface RootViewController ()
 4
 5 @end
 6
 7 @implementation RootViewController
 8
 9 - (void)viewDidLoad {
10     [super viewDidLoad];
11     [self initRecorder];
12 }
13
14 /**
15  *  初始化AVAudioRecorder
16  */
17 - (void)initRecorder{
18     NSError *error;
19     NSURL *url = [NSURL fileURLWithPath:@"/dev/null"];
20     NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:4100.0],AVSampleRateKey,[NSNumber numberWithInt:kAudioFormatAppleLossless],AVFormatIDKey,[NSNumber numberWithInt:1],AVNumberOfChannelsKey,[NSNumber numberWithInt:AVAudioQualityMax],AVEncoderAudioQualityKey, nil];
21     recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];
22     if (recorder) {
23         recorder.meteringEnabled = YES;
24         [recorder record];
25         levelTimer = [NSTimer scheduledTimerWithTimeInterval:0.03 target:self selector:@selector(audioLevelTimerCallback:) userInfo:nil repeats:YES];
26     }else{
27         NSLog(@"Error:%@",[error description]);
28     }
29 }
30
31 - (void)audioLevelTimerCallback:(NSTimer *)timer{
32     [recorder updateMeters];
33     double peakPowerForChannel = pow(10, 0.05*[recorder peakPowerForChannel:0]);
34     lowPass = 0.05 * peakPowerForChannel + (1 - 0.05) * lowPass;
35     [self rotateFanToAngle:(lowPass - 0.05)/(1 - 0.05)];
36
37 }
38
39 /**
40  *  旋转风扇
41  */
42 - (void)rotateFanToAngle:(double)angle{
43    [UIView transitionWithView:self.fan duration:angle*1.2 options:UIViewAnimationCurveEaseOut animations:^{
44        self.fan.transform = CGAffineTransformRotate(self.fan.transform, angle/3);
45    } completion:nil];
46 }
47
48 - (void)didReceiveMemoryWarning {
49     [super didReceiveMemoryWarning];
50     // Dispose of any resources that can be recreated.
51 }
52
53
54
55 @end

在xib文件中拖入UIImageView,然后添加相应的图片

时间: 07-27

旋转的风车(声音越大转速越快)的相关文章

mysql用limit时offset越大时间越长

首先说明一下MySQL的版本: mysql> select version();+-----------+| version() |+-----------+| 5.7.17    |+-----------+1 row in set (0.00 sec) 表结构: mysql> desc test;+--------+---------------------+------+-----+---------+----------------+| Field  | Type           

工资是用来支付给责任的,责任越大,工资越高。 涨工资,是因为承担了更大的责任。

听说一段时间不加薪,人就会开始思考起和工资有关的问题.消费水平又提升了,能力也进步了,经验也更多了,怎么还没涨工资呢? 近两年,有了点余钱就开始考虑起投资来,比如:投资股票首先需要判断的就是关于公司价值和价格的关系.回到个人身上,似乎工资也就是个人价值在市场上的一个价格.那我们的工资是如何被定义或确定的? 因为我的程序员职业背景,下面就以这个职业为例来分析下这个问题. 表象与实质 工资的高低给我们的感觉似乎和你的技能.经验呈一个正比关系.毕竟每次找工作面试的时候,考察的都是候选人的技能.经验相关

善良的力量可以像滚雪球,越滚越大

未经许可,谢绝任何形势的转载 每个人心中都住着一个善良的孩子 不久前腾讯新闻推送了的一则比较老的新闻,主人公的名字叫凯瑟琳.新闻中大致说了她在2006年做的一件影响很大的事情:帮助非洲儿童远离疟疾(念nue),拯救了上百万个小生命.我很喜欢这种天真善良的小朋友,我们一起来看看她的故事. 凯瑟琳出生在美国田纳西州一个幸福的家庭,妈妈是一个家庭妇女,爸爸安东尼是一个健身教练. 2006年4月初的一天,那时候凯瑟琳才5岁,她正在看电视的时候,看到非洲纪录片,纪录片正讲述非洲每30秒就会有一个小孩子死去

为何你越小心翼翼,越会被别人当成个屁?

1 以前,我看过一篇文章. 作者在里面讲了她在法国留学时候的一件事情. 当时,她去买裤子,走到一家店,拿起一条裤子怯生生地问店员:“可以试穿吗?”. 店员态度相当轻蔑,说:“可以.” 她试穿后发现不合身,便又去拿了大一号的,再次询问可不可以试穿,店员此时已经超不耐烦了:“可以!” 结果仍然不合身. 当她再次拿起大一号的裤子想要试穿时,店员却直接拿走了它,并指着她说:“你不可以再试穿了!” 她当时全身冷汗直冒只想钻进地缝,为掩饰窘迫只得买了一条十分昂贵的项链,由此导致的结果是,之后的一个月她只能啃

大四狗:我的java历程——越努力,越幸运。

大二的时候写过一篇博客,< 作为一名计算机学院普通的大学生如何提高兴趣敲代码 >,没想到当时引起了很多同学的共鸣,有的人觉得受到了鼓舞,有的人觉得看到这篇文章已经大四,要改变也太晚了.然而对于我,写完那篇博客之后发生了很多事情,在java学习上有坚持,有懈怠,有前进,亦有低谷.好在现在,起码是这会儿,我还在低头看路,还在走上坡路.那会儿到现在大概一年半的时间,我就来说说这一年半的时间我的java历程吧,还是和上次一样,希望大家在看完我的故事之后,可以留下感想.或是鼓励,分享自己学习java的经

1、只要有梦想,什么都能够实现。3、做得越多机会越多。

1.只要有梦想,什么都能够实现. 生活中需要梦想,有了梦想虽然不一定都能实现,但如果没有梦想,什么都不可能实现. 2.过去已经过去,展望将来吧. 3.做得越多机会越多. 趁年轻多做点事,这些都将成为你将来的财富 4.这个社会笑贫不笑娼,你走快一步,没人会介意,但是你若走慢一步,你就会永远被人瞧不起. 5.问问自己的心是不是真的有信心. 如果连你自己都没有自信,在这个社会还会有谁会相信你 6.做生意耍点卑鄙的手段也无所谓,可是绝对不能出卖自己亲人和朋友. 当今社会,谁做生意老老实实的,肯定完蛋,但

为什么P2P模式下载的人越多速度越快,为什么P2P伤害机械硬盘

台风来临前的夜晚,有点激动不想睡觉,看了几个电影,日本恐怖片,台风雨夜,非常不错,P2P很流畅,观察IP地址大量也是附近的,江浙沪,难道也都在迎台风看电影? 大家都知道使用P2P模式下载速度会非常快,原理其实也并不难,毕竟P2P没有中心瓶颈,每个节点既是下载方又是上传方,一起接力努力的模型总比C/S模 式对中心带宽的争抢要好吧,但是这背后有没有什么理论根据呢?本文就是描述这个理论根据的,我不会大段的贴数学公式,但是会贴一些,不算难,都懂的.在理 解了这个基本原理之后,你也就可以回答第二个问题了,

windows(API)绘图《旋转的风车》

这正是秋季将尽, 冬季未到的时候. 黄土高坡上应该已滚起了漫天黄土, 而这里却是万里晴空如连! 风, 丝丝入骨! 未央柳即将枯死的枝条,仍在挣扎. 街道两旁清一色的银杏树叶, 金灿耀眼. 耀的令人感动, 感动的令人心碎! 很显然,这是一个悲伤的人, 和一个悲伤的故事. 为什么我眼里常含泪水, 因为我对这C艹爱的深沉.先交代一下故事背景, 就是我们老师用了一节课的时间, 给我们讲了一下windows编程(god! 要知道类和对象她都还没讲清楚啊!) . 然后, 老师就布置了一道作业, 就是<旋转的

终于懂了:Delphi消息的Result完全是生造出来的,不是Windows消息自带的(Delphi对Windows编程体系的改造越大,学习收获就越大)

Windows中,消息使用统一的结构体(MSG)来存放信息,其中message表明消息的具体的类型, 而wParam,lParam是其最灵活的两个变量,为不同的消息类型时,存放数据的含义也不一样. time表示产生消息的时间,pt表示产生消息时鼠标的位置. 里面没有Result的选项.然后我用VC2008实测MSG结构的大小: #include <afx.h> void Cxe111Dlg::OnBnClickedButton1() { CString m_Str; int ddd = siz