2011-07-08 5 views
5

ランダムなUIColorをどのように取得するのか知っていますが、特定の品質の色のみを返す方法が存在するのでしょうか。私は特定の用語が存在するかどうかは分かりませんが、たとえば、不透明な色、濃い色のトーン、明るいテキストや画像を持つ背景に適した色などを取得する必要があります。どのようにランダムなUIColorを得るが、色のサブセットに制限する

私はいくつか手で選ぶことができましたが、私の場合は、アイコンの背景の大きなリストのための非常に良いデフォルトを提供したいと思います。

UPDATE:ここでの回答に基づいて

私のソリューション:

float r = arc4random() % 12; 

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

私は可能な答えの非常に小さなリストを取得するが、これは私の良いスタートを与えます。

答えて

1

私はHSV/HSL色空間を使ってRGBに変換します。一定の値と彩度(SとV)を保ち、好きな色数の色相(H)値を変更します。結果をRGBに変換すると、一緒にうまく動作するように見える素晴らしい色のセットが得られます。あなたのニーズに合わせてSとVの素晴らしい組み合わせを選ぶだけで、「飽和」、「明るい」、「暗い」などの素晴らしい色のセットを作成できます(低Vは暗、高Vは明るい、低Sは不飽和、高Sは飽和している)。

HSVをRGBに変換する方法については、this wiki pageをご覧ください。彩度(S)を0.5、値(V)を0.8にすることをお勧めします。素敵な色を生成するには、0,30,60,90のH値のHSV→RGB変換を360度まで行います。一緒に見栄えの良い色のパレットを生成します。後で、異なる色の「品質」が必要な場合は、S値とV値を調整できます。

+0

私はグラフィックスの経験はあまりありませんでしたので、私は手書きのリストを手に入れました。 – mamcx

+0

@mamcx HSVからRGBへの変換を記述する関連するWikiリンクを追加しました – aardvarkk

+1

なぜ私はRGBに変換する必要があるのか​​まだ分かりません:float r = arc4random()% 12; 返信[UIColor colorWithHue:(30 * r)/ 360飽和:0.5f輝度:0.8fアルファ:1.0f]; – mamcx

1

ランダムな色をバックグラウンドとして使用することは、アイコンのテキストと情報の可視性と可読性の問題につながるため、確かに最適ではありません。あなたの前景の色と一致する適切な色を自動的に見つけることで、画像の視覚的認識の観点から調和の結果につながる研究が行われています。ありがとうございますhttp://cs.nyu.edu/~sorkine/ProjectPages/Harmonization/

+0

これは本当に素敵なプロジェクトです! – aardvarkk

+0

はい、そうです。これは、既存のフォアグラウンドのための素晴らしいマッチングの背景を作成するのに特に便利です。画像が高調波に見えるようになります。 – KillerInsect

+0

"アクセス禁止!" : – steipete

関連する問題