Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在IPhone中制作可视化工具时,如何根据每拍音乐连续改变单个方形的颜色?_Ios_Iphone_Drawrect_Audio Player_Visualizer - Fatal编程技术网

Ios 在IPhone中制作可视化工具时,如何根据每拍音乐连续改变单个方形的颜色?

Ios 在IPhone中制作可视化工具时,如何根据每拍音乐连续改变单个方形的颜色?,ios,iphone,drawrect,audio-player,visualizer,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(); CGContextSetLineW

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

绘制网格的代码

- (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);
    }
}
}
-(void)drawRect:(CGRect)rect
对于(int i=0;i<4;i=i+1){
对于(int j=0;j<4;j=j+1){
CGContextRef context=UIGraphicsGetCurrentContext();
CGContextSetLineWidth(上下文,2.0);
CGContextSetStrokeColorWithColor(上下文[UIColor blueColor].CGColor);
CGRect矩形=CGRectMake((j*(100+2))+2,(i*(100+2))+2100100);
CGContextAddRect(上下文,矩形);
CGContextSetFillColorWithColor(上下文[UIColor REDCLOR].CGColor);
CGContextFillPath(上下文);
CGContextStrokePath(上下文);
}
}
}

它看起来像

我认为您应该有一个自定义的
ui视图

然后每隔很短的时间调用
setNeedsDisplayInRect:
,调用要重画的视图区域

最后实现
drawRect:
,并确保只通过重新绘制指定区域并快速进行优化


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

在我看来,你把自己搞得太复杂了,限制了未来的可能性。如果我是你,我会将UIView或UIImageView的网格放在一个数组中。(您可以通过编程或使用IB来完成)。(可以通过修改视图图层中的边界特性来添加边)

然后你可以通过独立设置背景颜色、颜色均匀度、颜色概率、随机所有,做任何你想做的事情,因为你所要做的就是在数组中循环设置每拍相应的颜色

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


你到底想要什么?你想要一个创建随机颜色的函数,还是想知道如何连续触发drawRect方法?我如何根据音乐节拍触发draw rect方法,我还想随机连续地更改方形颜色。你能帮我吗?是的,但我想要IPOD本机类的节拍MPMusicPlayerController,所以我可以使用这个类检索。你能解释一下吗?你是说每分钟的节拍吗?或者你想为歌曲的每一个节拍调用某种方法?看看这个问题这个链接帮不了我主要的问题是你问了两个完全不同的问题,一个是关于可视化的,另一个是关于声音分析的。我发布的链接也谈到了分析部分,如果你想要更多的帮助,你必须对你想要实现的目标非常明确。对反对票有什么反馈吗?更改多个视图的背景色需要在多个视图上多次调用
drawRect:
(由默认的
UIView
实现处理)。我的方法是在一个视图上调用multiple
drawReact:
,我认为除了有更多的自由来绘制任何东西之外,这对性能也有好处。