我想为我的音乐播放器制作可视化。因此我绘制了一个网格视图,我想随机或连续地更改每个方形颜色。
我的绘制网格代码
- (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);
}
}
}
看起来像
答案 0 :(得分:1)
在我看来,你过度复杂,限制了未来的可能性。如果我是你,我将把一个UIViews或UIImageViews网格放在一个数组中。 (您可以通过编程方式或与IB一起完成)。 (您可以通过修改视图图层中的border属性来添加边缘)
然后你可以通过独立设置背景颜色,颜色均衡,颜色赔率,随机全部,任何你想要的东西来做各种事情,因为你所要做的就是循环通过阵列设置每个节拍相应的颜色。
对于节拍部分来说比看起来更复杂。检查这个问题,它提供了很多关于&#34;音乐信息检索的提示&#34;。
答案 1 :(得分:-3)
我认为你应该有一个自定义UIView
。
然后以较短的间隔setNeedsDisplayInRect:
调用您要重绘的视图区域。
最后实现drawRect:
并确保通过仅重绘指定区域并快速完成来优化它!
至于音乐节拍,最好打开一个单独的问题;)