この記事は最終更新日から1年以上が経過しています。
色が暗い色かどうかを判定する
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年入社の新卒です。
iOSアプリの開発やCI環境の構築・管理をしています。
最近書いた記事
- 2022.12.10Visual Regression Testingを導入してみた(iOSアプリ)
- 2019.10.23iOSアプリのバージョンとApp Extensionのバージョンを合わせる
- 2019.10.21Xcode 11でUIScrollViewのAutoLayoutの制約のかけ方が変わった
- 2019.10.18BitriseでiOSのビルド速度を上げる