IOS工程师开发环境用RGB和hexcolor的区别是?

作者:钟颖Cyan

链接:https://www.zhihu.com/question/33503266/answer/56656774 

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在不使用HSB颜色的情况下其实没有区别,这两个都是用的RGB颜色。

Hex只是一种进制,十六进制。

iOS 提供的默认构造颜色(特指RGB)的方法其实是用RGBA的每个0~1的分数来构造的,比如:

[UIColorcolorWithRed:0.2green:0.2blue:0.2alpha:1.0];

表示Red 20% Green 20% Blue 20% Alpha 100%

但其实真实情况是我们使用的是256色,所以这个颜色其实是

Red 51, Green 51, Blue 51, Alpha 1

所以我们一般会有一个方法,可以用三个0~255十进制数来生成一个颜色:

[UIColorcolorWithRed:51/255.0green:51/255.0blue:51/255.0alpha:1];

但是如果设计师给的是16进制的颜色,比如#354b60

工程师有两种办法,第一种还是使用上面那个方法,不过填进去的时候他会这么填:

[UIColorcolorWithRed:0x35/255.0green:0x4b/255.0blue:0x60/255.0alpha:1];

即把每一位拆开,以16进制数填进去

另外他会写一个方便用16进制数来构造颜色的方法,比如:

+(UIColor*)colorWithRGB:(int)rgb{return[UIColorcolorWithRed:((rgb&0xFF0000)>>16)/255.0fgreen:((rgb&0xFF00)>>8)/255.0fblue:((rgb&0xFF))/255.0falpha:1.0f];}

这样的话可以把十六进制数0x354b60填进去也能生成同样的一个颜色。

上面提到的只是一个原理,现实中我们可能会使用一些工具类/扩展或者宏定义之类的来简化这个事情。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • iOS开发过程中使用一些常用的宏可以提高开发效率,提高代码的重用性;将这些宏放到一个头文件里然后再放到工程中的-P...
    小地阅读 2,948评论 0 0
  • Hex只是一种进制,十六进制。iOS 提供的默认构造颜色(特指RGB)的方法其实是用RGBA的每个0~1的分数来构...
    米米0311阅读 5,729评论 0 0
  • //联系人:石虎QQ: 1224614774昵称:嗡嘛呢叭咪哄 一、颜色宏定义 // RGB颜色转换(16进制->...
    石虎132阅读 6,530评论 0 6
  • 前几天,一直在编辑《大校的女儿》的观剧随感,忽然就断了,没能继续下去,一种不畅快淋漓的被动感;客观上是因为手头有事...
    木徒阅读 5,065评论 1 0
  • 其实也不是首次工作,如果算上研究生的话。如果现在您也是一穷二白且再无学校管理的离家工作且无家长指导或者和我一样谢绝...
    大宋快递阅读 1,310评论 0 0

友情链接更多精彩内容