4

我想为我的音乐播放器做一个可视化。所以我画了一个网格视图,我想随机或连续地改变每个正方形的颜色。

我的绘制网格代码

- (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);
    }
}
}

看起来像这个图片

4

2 回答 2

1

在我看来,您使自己过于复杂,并限制了未来的可能性。如果我是你,我会在一个数组中放置一个 UIViews 或 UIImageViews 网格。(您可以通过编程方式或使用 IB 来完成)。(可以通过修改视图层的border属性来添加边)

然后,您可以通过独立设置背景颜色、颜色均匀度、颜色几率、随机所有、您想要的任何东西来做各种事情,因为您所要做的就是在数组中循环设置每个节拍相应的颜色。

因为节拍部分比看起来要复杂得多。检查这个问题,它提供了很多关于“音乐信息检索”的提示。

如何在php中检测歌曲的BPM

于 2014-05-16T02:34:09.290 回答
-3

我认为您应该有一个 custom UIView

然后在短时间内调用setNeedsDisplayInRect:您要重绘的视图区域。

最后实现drawRect:并确保通过仅重绘指定区域来优化它,并且做得很快!

至于音乐节拍,最好单独提出一个问题;)

于 2014-05-16T02:19:09.213 回答