目次

目次

暗い色かどうか判定する UIColor の Extension

アバター画像
村田真矢
アバター画像
村田真矢
最終更新日2019/09/27 投稿日2019/09/27

色が暗い色かどうかを判定する

extension UIColor {
    func calculateBrightnessDifference() -> CGFloat {
        var red: CGFloat = 0.0, green: CGFloat = 0.0, blue: CGFloat = 0.0
        self.getRed(&red, green: &green, blue: &blue, alpha: nil)

        // 計算式参考 https://www.w3.org/TR/AERT/#color-contrast
        return ((red * 255 * 299) + (green * 255 * 587) + (blue * 255 * 114)) / 1000
    }

    func isDrakColor() -> Bool {
        // 参考 https://www.w3.org/TR/AERT/#color
        let referenceValue: CGFloat = 125.0

        if self.calculateBrightnessDifference() < referenceValue {
            return true
        } else {
            return false
        }
    }
}

上記の isDrakColor() を使えば暗い色かどうかが判定できるので、 背景が暗い色の場合はLabelの文字色を明るい色・明るい色の場合はLabelの文字色を暗い色といったように変更できます。

if backgroundColor.isDrakColor() {
   self.label.textColor = UIColor.white
} else {
   self.label.textColor = UIColor.black
}

背景色が固定でない場合等は、これで判定し見やすい文字色で描画できそうです。

アバター画像

村田真矢

2018年入社の新卒です。
EMやっています。

目次