1. ホーム
  2. ios

[解決済み] UIColorが暗いか明るいかをチェックする?

2022-09-09 06:20:59

質問

私は、選択された UIColor (ユーザーによって選ばれる) が暗いか明るいかを判断する必要があり、読みやすくするために、その色の上にあるテキストの行の色を変更できます。

Flash/Actionscriptでの例です(デモあり)。 http://web.archive.org/web/20100102024448/http://theflashblog.com/?p=173

何かご意見はありますか?

乾杯 アンドレ

アップデイト

みんなの提案のおかげで、これが動くコードです。

- (void) updateColor:(UIColor *) newColor
{
    const CGFloat *componentColors = CGColorGetComponents(newColor.CGColor);

    CGFloat colorBrightness = ((componentColors[0] * 299) + (componentColors[1] * 587) + (componentColors[2] * 114)) / 1000;
    if (colorBrightness < 0.5)
    {
        NSLog(@"my color is dark");
    }
    else
    {
        NSLog(@"my color is light");
    }
}

改めてありがとうございます :)

どのように解決するのですか?

W3Cには、以下のようなものがあります。 http://www.w3.org/WAI/ER/WD-AERT/#color-contrast

黒か白のテキストだけなら、上の色の明るさの計算を使う。125以下であれば、白テキストを使用します。125以上の場合は、黒文字を使用します。

編集1:黒文字に偏る :)

編集2:使用する計算式は、((赤の値 * 299) + (緑の値 * 587) + (青の値 * 114)) です。/ 1000.