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填进去也能生成同样的一个颜色。

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

你可能感兴趣的:(IOS工程师开发环境用RGB和hexcolor的区别是?)