Dha*_*r S -2 hex objective-c uicolor ios
下面的方法中&、0x000000FF和 >> 8有什么用 ?谁能解释一下吗?
\n\n提前致谢
\n\n(UIColor *)UIColorFromIntegerCode:(int)integerCode\xc2\xa0 { \n CGFloat r = (integerCode & 0x000000FF) / 255.0f;\n\xc2\xa0 \xc2\xa0 CGFloat g = ((integerCode & 0x0000FF00) >> 8) / 255.0f;\n\xc2\xa0 \xc2\xa0 CGFloat b = ((integerCode & 0x00FF0000) >> 16) / 255.0f;\n\n\xc2\xa0 \xc2\xa0 return [UIColor colorWithRed:r green:g blue:b alpha:1.0f];\n}\nRun Code Online (Sandbox Code Playgroud)\n
注意:你的程序中有一个小错误。这是编辑后的版本:
- (UIColor *)UIColorFromIntegerCode:(int)integerCode {
CGFloat b = (integerCode & 0x000000FF) / 255.0f;
CGFloat g = ((integerCode & 0x0000FF00) >> 8) / 255.0f;
CGFloat r = ((integerCode & 0x00FF0000) >> 16) / 255.0f;
return [UIColor colorWithRed:r green:g blue:b alpha:1.0f];
}
Run Code Online (Sandbox Code Playgroud)
解释:
& 是按位与运算符:它接受两个数字,对每一位进行与运算。如果两个位都为 1,则结果位为 1,否则为 0。
>> 是按位右移运算符:它需要两个数字。首先是要移动的数字。其次是要转移的地方。
0x000000FF是蓝色的十六进制表示。在 和 之间执行按位integerCode与,0x000000FF过滤掉整数代码中的蓝色位并将其分配给浮点 b。
同样,0x0000FF00绿色的十六进制是0x00FF0000红色的十六进制。
FF请注意三个十六进制值之间的变化。
0x000000 FF
0x0000 FF 00(右移 8 位)
0x00 FF 0000(右移 16 位)
按位右移运算符用于调整位的移位。最后将过滤后的值除以 255,使其介于 0 和 1 之间。(255 是特定颜色可以具有的最大值。)
过滤 r、g 和 b 中的颜色后,将它们提供给 UIColor 方法来创建 UIColor。
如果您对按位运算符的详细信息进一步感兴趣,这里是一个很好的资源。
| 归档时间: |
|
| 查看次数: |
7719 次 |
| 最近记录: |