如何在iPhone中制作可视化器时,如何连续改变音乐的每个节拍颜色?

时间:2014-05-13 09:08:38

标签: ios iphone drawrect audio-player visualizer

我想为我的音乐播放器制作可视化。因此我绘制了一个网格视图,我想随机或连续地更改每个方形颜色。

我的绘制网格代码

- (void)drawRect:(CGRect)rect

 for (int i = 0; i < 4 ;i = i + 1) {
    for (int j = 0; j < 4; j = j + 1) {
        CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetLineWidth(context, 2.0);

CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);

CGRect rectangle = CGRectMake((j*(100+2))+2,(i*(100+2))+2,100,100);

CGContextAddRect(context, rectangle);
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
        CGContextFillPath(context);
CGContextStrokePath(context);
    }
}
}

看起来像this image

2 个答案:

答案 0 :(得分:1)

在我看来,你过度复杂,限制了未来的可能性。如果我是你,我将把一个UIViews或UIImageViews网格放在一个数组中。 (您可以通过编程方式或与IB一起完成)。 (您可以通过修改视图图层中的border属性来添加边缘)

然后你可以通过独立设置背景颜色,颜色均衡,颜色赔率,随机全部,任何你想要的东西来做各种事情,因为你所要做的就是循环通过阵列设置每个节拍相应的颜色。

对于节拍部分来说比看起来更复杂。检查这个问题,它提供了很多关于&#34;音乐信息检索的提示&#34;。

How to detect the BPM of a song in php

答案 1 :(得分:-3)

我认为你应该有一个自定义UIView

然后以较短的间隔setNeedsDisplayInRect:调用您要重绘的视图区域。

最后实现drawRect:并确保通过仅重绘指定区域并快速完成来优化它!

至于音乐节拍,最好打开一个单独的问题;)