ランダムに色を作るという時にふと思ったのでメモっちゃいます。
普通、ランダムに色を作るというと次のようなコードをかくと思います。

[objc]
float rand1,rand2, rand3; //乱数など
UIColor color = [UIColor colorWithRed:rand1 green:rand2 blue:rand3 alpha:1];
[/objc]

しかし、これだと綺麗な色も汚い色も全部出てきてしまってちょっと困ることもあります。

綺麗なな色の作り方

この問題は、RGB方式の色ではなく、HSB方式の色を考えてあげると簡単に解決します。

[objc]
float rand;
UIColor color = [UIColor colorWithHue:rand saturation:1 brightness:1 alpha:1];
[/objc]

HSB方式では色の種類に関わる引数はHueのみで、saturationは色の鮮やかさ、brightnessは色の明るさを表しています。
鮮やかさや明るさを固定し、色の種類のみを変えてあげることで綺麗な色のみを作り出すことができます。

区別可能な色を作りたいときにも!

HSB方式で色を作成すると乱数が1つのみになります。
また、鮮やかさや明るさの違いだけで色をぱっと見分けるのは難しいですが、色の種類が変わると(赤から青になったりすると)すぐ見分けることができます。

これを利用してあげると、例えばindex番号でviewの背景色を綺麗かつ区別可能な色を設定する
といったこともできるようになります。
めったに使わないですが、新しいviewを作るときの動作テストなどには使えそうです。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>