网上有很多牛逼的宏可以把16进制颜色转为RGB颜色,参考刀哥讲的也来模仿一个, 同时练习一下markDown语法。``` 三个这东西可以包裹一大段代码块。
主要用到了用到了位运算(&)和左移(<<)右移(>>)运算
给UIColor新建一个Category
这里是方法申明部分
@interface UIColor (Hex)
/**
16进制颜色转为RGB颜色
@param hexValue 32位无符号长整型
@return UIColor 的实例对象
*/
+ (instancetype)rb_convertToRGBColorWithHexValue:(uint32_t) hexValue;
@end
方法的实现部分:
@implementation UIColor (Hex)
+ (instancetype)rb_convertToRGBColorWithHexValue:(uint32_t)hexValue {
// 0xaaFF66 1010 1010 1111 1111 0110 0110
// 0xFF0000 1111 1111 0000 0000 0000 0000
// &位运算结果 :& 都为1则值为1 否则为0
// 0xFF0000 1111 1111 0000 0000 0000 0000
// >>16 右移运算结果 : >> 右移运算,各二进制数右移n位,
// 0x0000FF
CGFloat red = (hexValue & 0xFF0000) >> 16;
CGFloat green = (hexValue & 0x00FF00) >> 8;
CGFloat blue = (hexValue & 0x0000FF);
return [UIColor colorWithRed:red / 255.0 green:green / 255.0 blue:blue / 255.0 alpha:1.0];
}
来看一下效果:

网友评论