美文网首页
Swift 3 做 Color 颜色深浅的判断

Swift 3 做 Color 颜色深浅的判断

作者: 扬仔360 | 来源:发表于2017-03-31 21:36 被阅读228次

结论在最后~

为了提高产品视觉体验,今天做了一个需求,要根据颜色的深浅来自动变换文字的颜色

刚开始的时候我想拿 rbg 三个值的和来判断,🤔我认为!因为白色黑色是两个极端,所以相加刚好能跟亮度关联起来的!

      var vRed: CGFloat = 0
      var vGreen: CGFloat = 0
      var vBlue: CGFloat = 0
      var vAlpha: CGFloat = 0
      tintColor.getRed(&vRed, green: &vGreen, blue: &vBlue, alpha: &vAlpha)
      if fontColor = (vRed+vGreen+vBlue) < 2 {
            //浅色
      } else {
            //深色
      }

我的两个颜色,50, 193, 255 跟 70, 190, 250,肉眼识别差不多的两个蓝色,一个是判断出来是深色,一个是浅色
以及我发现黄色 #FFFF00,通过这个判断也是深色!
但是黄色怎么看都不符合深色的规则

后来发现 RGB 其实是不适合处理这种情况的,后来查资料找到了 YUV 模式,所以将 RGB 转为 YUV 编码

其中「Y」刚好表示 明亮度

所以判断深浅只需要获得这个 Y 就可以了,找到的转换公式

  Y = 0.299R + 0.587G + 0.114B

Swift 上做值的处理,因为我 rgb 三个值的范围是 0 ~ 1,所以我的判断条件是:

  let yValue = 0.299 * vRed + 0.587 & vGreen + 0.114 * vBlue
  if yValue > 0.75 {
        //浅色
  } else {
        //深色
  }

Done.

相关文章

  • Swift 3 做 Color 颜色深浅的判断

    结论在最后~ 为了提高产品视觉体验,今天做了一个需求,要根据颜色的深浅来自动变换文字的颜色 刚开始的时候我想拿 r...

  • Color RGB颜色深浅的排序

    最近由于项目需要,需要对后台传递过来的十六进制的RGB,按照颜色由浅至深进行排序.参考此链接RGB排序,通过将RG...

  • Xcode 8 的 3 个小技巧

    Color Literal(只支持Swift) 一般写颜色大概是这样的: let color = UIColor(...

  • 在swift中使用Xcode自带的Image Literal实现

    前言 在swift中使用Xcode自带的Color Literal实现颜色的智能提示中介绍了Xcode自带的颜色提...

  • swift color适配 颜色适配

    使用 代码 UIColor 分类

  • 036笔记

    同类色 color of same kind 指色相性质相同,但色度有深浅之分。(是色相环中15°夹角内的颜色) ...

  • CSS基础2

    文本 文字颜色color属性名color颜色的值可以采用3种方式1.预定义的颜色名字比如red,gray,whit...

  • CSS学习笔记(四)

    CSS外观属性 1.color:文本颜色color属性用于定义文本的颜色,其取值方式有如下3种:(1)预定义的颜色...

  • python从入门到编程习题第5章

    #5-3 外星人颜色 alien_color = "green" if alien_color == "green...

  • 第3章 CSS3边框-2

    3.2 CSS3边框颜色属性 3.2.1 border-color属性的语法及参数 border-color的语法...

网友评论

      本文标题:Swift 3 做 Color 颜色深浅的判断

      本文链接:https://www.haomeiwen.com/subject/gstbottx.html