2013-10-18 30 views
9

私の表示には、テキストラベルのオーバーレイが付いた背景画像があります 背景画像に基づいてテキストの色を判断するための最良の方法はありますか?しかしテキストの色が暗い又は光でなければならないかどうかを決定する上で興味を持って)背景色に基づくテキストの色

おかげ:)

答えて

14

リンクウォズとの平均色を探すには、このようなあなたのテキスト

CGFloat red = 0.0, green = 0.0, blue = 0.0, alpha = 0.0; 
[averageColor getRed:&red green:&green blue:&blue alpha:&alpha]; 

int threshold = 105; 
int bgDelta = ((red * 0.299) + (green * 0.587) + (blue * 0.114)); 

UIColor *textColor = (255 - bgDelta < threshold) ? [UIColor blackColor] : [UIColor whiteColor]; 

何かのスタイルを次に

を述べました。

上記のリンクを使用して画像からUIColorを取得し、UIColorにmatt's categoryを使用して明暗を取得することもできます。

+0

ありがとう、それは働いた! BTWは、この質問に記載されている数式を見つけたhttp://stackoverflow.com/questions/2509443/check-if-uicolor-is-dark-or-bright#answer-2509596 –

+0

Mattsカテゴリが大きすぎると私のために正しく働いていない赤い背景に黒のテキスト)。より良い使い方stackoverflow.com/a/18303674/5790492 - Nik Kovは今編集しています –

7

私の最初の画像の平均色を見つけて、それに基づいてテキストの色を設定することです。もちろん、イメージには明るい領域と暗い領域が含まれる可能性があるため、選択した色は時折判読できない可能性があります。

は、画像の平均色を見つけるには、これを試してください:あなたは平均的な色を持っていたら

http://www.bobbygeorgescu.com/2011/08/finding-average-color-of-uiimage/

は、赤、緑、青の値を確認してください。それらが「十分に高い」(あなたがそのように定義したものであれば)、暗いテキストを使用し、そうでない場合は軽いテキストを使用します。