如何获得随机UIColor但将其限制为颜色的子集

mam*_*mcx 5 iphone cocoa-touch uikit uicolor

我知道如何得到一个随机的UIColor,但我想知道是否存在一种只返回具有某种特定质量的颜色的方法.我不知道是否存在一个特定的术语,但是,例如,我只需要获得不透明的颜色,深色调......对于背景上有明亮文本/图像的颜色.

我可以亲自挑选一些,但在我的情况下,我想为一大堆图标背景提供一个非常好的默认值.

更新:

我的解决方案基于这里的答案:

float r = arc4random() % 12; 

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

我得到了一个很小的可能答案列表,但这给了我一个良好的开端.

aar*_*rkk 1

我要做的是使用 HSV/HSL 颜色空间,然后将结果转换为 RGB。保持您喜欢的恒定值和饱和度(S 和 V),然后根据您想要的颜色数量更改色调 (H) 值。将结果转换为 RGB,您将获得一组看起来可以很好地协同工作的颜色。您可以创建任何一组“饱和”、“亮”、“暗”等漂亮颜色,只需根据您的需要选择 S 和 V 的良好组合即可(低 V 为暗,高 V 为亮,低 S 为不饱和,高S为饱和)。

请查看此 wiki 页面,了解有关将 HSV 转换为 RGB 的讨论。我建议您从饱和度 (S) 为 0.5、值 (V) 为 0.8 开始。然后,要生成漂亮的颜色,请对 H 值 0、30、60、90... 一直到 360 进行 HSV -> RGB 转换。它将生成一个漂亮的调色板,这些颜色在一起看起来很好。稍后,如果您想要不同的颜色“质量”,您可以调整 S 和 V 值。