,你会使用它像任何普通的RGB值。
RGB值的格式是这样,RRGGBB
但这种说法(是rgbValue)需要在它前面的0X使其十六进制,
因此,你会用你的宏这样:
UIColorFromRGB(0xRRGGBB);
或UIColorFromRGB(0x653593);
#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0];
如果您的问题是关于了解((float)((rgbValue & 0xFF0000) >> 16))/255.0
的工作原理,请稍微介绍一下。
首先我们注意到最后我们会将上半部分(分子)除以255.0。这是colorWithRed:green:blue:alpha:
的标准做法,所以我们需要分子作为浮点数。所以我们把这个值作为float
。
让我们接下来评估(rgbValue & 0xFF00) >> 8
。显然rgbValue
是我们传递给函数的值。正如我们前面发现的那样,rgbValue
的值实际上是十六进制的。第一部分,(rgbValue & 0xFF00)表示按位AND
。然后>>
按位移8位右边的位。作为回报,仅返回(在本例中)rgbValue变量的绿色值。之后,我们除以255.0并得到[UIColor colorWithRed:green:blue:alpha]
接受的实际接受值。
但为什么位移>> 16等? – Haagenti
'(rgbValue&0xFF00000)'会给红色“0xFF00000”。我们需要将其更改为'0x0000FF'或'255.0',以便可以接受'[UIColor colorWithRed:green:blue:alpha:]'方法。 – duci9y
得到它谢谢你! 4分钟为正确答案 – Haagenti