在Swift中从背景颜色确定文本颜色?

时间:2017-11-18 11:35:47

标签: ios swift

我正在Swift中制作一个颜色选择器应用程序,我需要文本来适应背景颜色。

我的UIView上的文字默认为黑色,如果有较深的背景颜色,我希望它变浅,如果背景颜色较浅则使文字更暗,以使文字更具可读性。 / p>

以下是一些截图:

难以阅读的文字(第一张图片)
img

难以阅读的文字(第二张图片)
img

如果有可能,我会感谢您的回复。

1 个答案:

答案 0 :(得分:8)

您可以执行以下操作:

extension UIColor
{
    var isDarkColor: Bool {
        var r, g, b, a: CGFloat
        (r, g, b, a) = (0, 0, 0, 0)
        self.getRed(&r, green: &g, blue: &b, alpha: &a)
        let lum = 0.2126 * r + 0.7152 * g + 0.0722 * b
        return  lum < 0.50 ? true : false
    }
}

将计算颜色的亮度并确定它是否高于某个阈值。然后说myLabel.textColor = view.backgroundColor?.isDarkColor == true ? .white : .black