UIColor 中提取 RGBA

这篇博客主要介绍了在iOS开发中如何从UIColor对象中提取RGBA值,特别指出了一些颜色无法直接获取RGBA的情况,以及如何确保从特定初始化方法创建的颜色能成功获取其通道值。
摘要由CSDN通过智能技术生成

遇到一些获取颜色RGB的需求,在这里记录下

UIColor *color = [UIColor redColor];
// 普通颜色可以通过 这个方法获取的RGBA的值
// 颜色空间是固定的,对应RGBA
const CGFloat *cmp = CGColorGetComponents(fColor.CGColor);
r = cmp[0];
g = cmp[1];
b = cmp[2];
a = cmp[3];

有些颜色是获取不到RGBA的, 比如 [UIColor whiteColor] [UIColor blackColor] [UIColor colorWithWhite: alpha:] 这些方法创建的
通过 colorWithRed: green: blue: alpha: 创建的肯定能够获取到RGBA, 所以
可以通过这个方法获取颜色通道数量

unsigned long int fNum = CGColorGetNumberOfComponents(fColor.CGColor);
if (fNum == 4) {
    // 在调用上面的方法获取RGBA
}

用这个方法可以获取到

- (void)dc_getRGBComponents:(CGFloat [3])cmp forColor:(UIColor *)color {
    CGColorSpaceRef spaceRef = CGColorSpaceCreateDeviceRGB();
    unsigned char resultPixel[4];
    CGContextRef ctx = C
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值