2011-07-08 4 views
5

Sé cómo obtener un UIColor al azar, pero me pregunto si existe una forma de devolver los colores únicamente con cierta calidad específica. No sé si existe un término específico, pero, por ejemplo, necesito obtener solo colores opacos, tonos oscuros ... colores que son buenos para fondos con texto/imágenes brillantes en él.Cómo obtener un UIColor aleatorio pero restringirlo a un subconjunto de los colores

Pude elegir algunos, pero en mi caso quiero proporcionar una muy buena configuración predeterminada para una gran lista de fondos de iconos.

ACTUALIZACIÓN:

Mi solución basada en la respuesta aquí:

float r = arc4random() % 12; 

return [UIColor colorWithHue:(30*r)/360 saturation:0.5f brightness:0.8f alpha:1.0f]; 

me dan una muy pequeña lista de posibles respuestas, pero esto me dará un buen comienzo.

Respuesta

1

Lo que haría sería usar el espacio de color HSV/HSL y luego convertir los resultados a RGB. Mantenga un valor constante y saturación (S y V) cuyas cualidades le gusten, y luego modifique el valor del tono (H) para la cantidad de colores que desee. Convierta los resultados a RGB y tendrá un bonito conjunto de colores que parecen funcionar bien juntos. Puede crear cualquier conjunto de colores agradables que estén 'saturados', 'brillantes', 'oscuros', etc. simplemente eligiendo buenas combinaciones de S y V para sus necesidades (bajo V es oscuro, alto V es brillante, bajo S es insaturado, alto S es saturado).

Eche un vistazo a this wiki page para una discusión sobre la conversión de HSV a RGB. Te recomiendo que comiences con saturación (S) a 0.5 y valor (V) a 0.8. Luego, para generar buenos colores, realice la conversión HSV -> RGB para valores H de 0, 30, 60, 90 ... hasta 360. Generará una bonita paleta de colores que se verán bien juntos. Más tarde, puede ajustar sus valores S y V si desea diferentes "calidades" de color.

+0

Ok, no tengo mucha experiencia con los gráficos, así que estás diciendo que obtengo una lista hecha a mano, luego modifica su S & V? – mamcx

+0

@mamcx Agregué un enlace wiki relevante para describir la conversión de HSV a RGB. – aardvarkk

+1

Todavía no entiendo por qué necesito convertir a RGB. Lo hago: float r = arc4random()% 12; return [UIColor colorWithHue: (30 * r)/360 saturación: 0.5f brillo: 0.8f alpha: 1.0f]; – mamcx

1

El uso de un color aleatorio como fondo es, de hecho, una solución poco óptima, ya que dará lugar a problemas de visibilidad y legibilidad del texto y la información de su icono. Se están llevando a cabo algunas investigaciones para encontrar automáticamente un color apropiado que coincida con los colores de primer plano, lo que lleva a un resultado armónico en términos de percepción visual de la imagen. Eche un vistazo a http://cs.nyu.edu/~sorkine/ProjectPages/Harmonization/

+0

¡Este es un proyecto realmente bueno! – aardvarkk

+0

Sí, lo es. Es especialmente útil para crear un lindo fondo que combine para un primer plano ya existente. Hará que la imagen se vea armónica. – KillerInsect

+0

"¡Acceso prohibido!" :( – steipete

Cuestiones relacionadas