¿Cómo cambiar continuamente el color cuadrado individual con respecto a la música por latido para hacer un visualizador en iPhone?

Quiero hacer una visualización para mi reproductor de música. Así que dibujo una vista de cuadrícula y quiero cambiar cada color cuadrado de forma aleatoria o continua.

Mi código para la cuadrícula de sorteo

- (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 networkingColor].CGColor); CGContextFillPath(context); CGContextStrokePath(context); } } } 

parece que esta imagen

En mi opinión, se está complicando demasiado y limitando las posibilidades futuras. Si fuera usted, tendría una grilla de UIViews o UIImageViews colocados en una matriz. (Puede hacerlo mediante progtwigción o con el IB). (Puede agregar los bordes modificando la propiedad de borde en la capa de vista)

Entonces puedes hacer todo tipo de cosas configurando sus colors de background de manera independiente, colors igualados, probabilidades de color, todo aleatorio, cualquier cosa que quieras, ya que todo lo que tienes que hacer es recorrer la matriz estableciendo los colors de acuerdo a cada ritmo.

Para la parte de beats es mucho más complicado de lo que parece. Verifique esta pregunta, ofrece muchos consejos sobre "recuperación de información musical".

Cómo detectar el BPM de una canción en php

Creo que deberías tener una única UIView personalizada.

Luego llame a intervalos cortos setNeedsDisplayInRect: con el área de la vista que desea volver a dibujar.

Finalmente, implementa drawRect: y asegúrate de optimizarlo solo volviendo a dibujar el área especificada, y haciéndolo rápido!

En cuanto a los ritmos musicales, mejor abrir una pregunta por separado;)

Intereting Posts